每次拍照上传成功后,应用会自动:
- 在日志中输出图片URL
- 将URL复制到剪贴板
- 保存URL到本地存储
- 在Toast消息中显示URL
你可以通过以下方式获取图片URL:
// 获取最新的图片URL
val latestUrl = imageUrlManager.getLatestImageUrl()
// 获取所有图片URL
val allUrls = imageUrlManager.getAllImageUrls()
// 获取URL总数
val count = imageUrlManager.getUrlCount()生成的图片URL格式如下:
https://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/camera-photos/photo_20240101_120000_123.jpg
组成部分:
your-bucket-name: 你的OSS存储桶名称oss-cn-hangzhou.aliyuncs.com: OSS访问域名camera-photos/: 配置的上传文件夹photo_20240101_120000_123.jpg: 自动生成的文件名
<img src="https://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/camera-photos/photo_20240101_120000_123.jpg" alt="拍摄的照片">// 使用Glide加载图片
Glide.with(context)
.load(imageUrl)
.into(imageView)
// 使用Picasso加载图片
Picasso.get()
.load(imageUrl)
.into(imageView)// 生成200x200的缩略图URL
val thumbnailUrl = imageUrlManager.getThumbnailUrl(originalUrl, 200, 200)// 保存URL
imageUrlManager.saveImageUrl(url)
// 获取最新URL
val latestUrl = imageUrlManager.getLatestImageUrl()
// 获取所有URL(包含时间信息)
val allUrls = imageUrlManager.getAllImageUrls()// 复制到剪贴板
imageUrlManager.copyUrlToClipboard(url)
// 分享URL
imageUrlManager.shareImageUrl(url)// 验证URL有效性
val isValid = imageUrlManager.isUrlValid(url)
// 从URL提取文件名
val fileName = imageUrlManager.getFileNameFromUrl(url)
// 清除所有保存的URL
imageUrlManager.clearAllUrls()查看图片URL相关日志:
# 查看上传成功的URL
adb logcat | grep "图片上传OSS成功"
# 查看URL管理相关日志
adb logcat | grep "ImageUrlManager"
# 查看所有相关日志
adb logcat | grep -E "(图片URL|ImageUrlManager|OSSUploadService)"你可以在 CameraFragment.onImageUploadSuccess() 方法中添加自定义逻辑:
private fun onImageUploadSuccess(imageUrl: String) {
// 保存到本地
imageUrlManager.saveImageUrl(imageUrl)
// 发送到你的服务器
sendUrlToServer(imageUrl)
// 保存到数据库
saveUrlToDatabase(imageUrl)
// 发送通知
sendNotification("图片上传成功", imageUrl)
// 更新UI
updateUI(imageUrl)
}A: 检查OSS bucket的访问权限设置,确保允许公共读取。
A: 修改 OSSUploadService.kt 中的文件名生成逻辑。
A: 使用 imageUrlManager.getAllImageUrls() 获取所有保存的URL。
A: 使用 imageUrlManager.clearAllUrls() 清除所有保存的URL。
阿里云OSS支持实时图片处理,你可以在URL后添加参数:
// 调整大小
val resizedUrl = "$originalUrl?x-oss-process=image/resize,w_300,h_300"
// 添加水印
val watermarkUrl = "$originalUrl?x-oss-process=image/watermark,text_Hello"
// 格式转换
val webpUrl = "$originalUrl?x-oss-process=image/format,webp"如果需要私有访问,可以生成带签名的URL:
// 在OSSUploadService中添加方法
fun generateSignedUrl(objectKey: String, expiration: Long): String {
// 使用OSS SDK生成带签名的URL
return ossClient.presignConstrainedObjectURL(bucketName, objectKey, expiration)
}