2018年Android Firebase Storage图片上传与获取(taskSnapshot/getDownloadUrl已弃用)
Android平台Firebase Storage图片上传与获取指南(适配taskSnapshot/getDownloadUrl弃用情况,2018年)
嘿,我刚把这个问题搞定,正好来分享下在2018年的Android项目里怎么处理Firebase Storage的图片上传和下载链接获取——毕竟原来的taskSnapshot.getDownloadUrl()已经被官方弃用了,得换个新方法才行!
一、先确认依赖配置
首先得确保你的build.gradle里引入了正确的Firebase Storage依赖,2018年的稳定版本大概是这样的:
implementation 'com.google.firebase:firebase-storage:16.+'
记得同步gradle哦。
二、图片上传并获取下载链接
上传的核心逻辑和之前差不多,但获取链接的步骤变了,直接看代码示例更清楚:
代码实现
// 1. 获取Firebase Storage的根引用 StorageReference storageRef = FirebaseStorage.getInstance().getReference(); // 2. 生成唯一的文件名,防止重复覆盖 String uniqueFileName = UUID.randomUUID().toString() + ".jpg"; // 指定图片要上传到的路径,比如存到user_images文件夹下 StorageReference targetImageRef = storageRef.child("user_images/" + uniqueFileName); // 3. 假设你已经从相册或相机拿到了图片的Uri(fileUri) UploadTask uploadTask = targetImageRef.putFile(fileUri); // 4. 监听上传状态 uploadTask.addOnSuccessListener(taskSnapshot -> { // 上传成功!现在获取下载链接——重点在这里,不再用taskSnapshot.getDownloadUrl() targetImageRef.getDownloadUrl().addOnSuccessListener(downloadUri -> { String imageUrl = downloadUri.toString(); // 到这里你就拿到了图片的永久下载链接,可以把它存到Firestore或者实时数据库里 Log.d("StorageDemo", "图片下载链接:" + imageUrl); // 比如给ImageView加载图片:Glide.with(this).load(imageUrl).into(yourImageView); }).addOnFailureListener(e -> { // 获取链接失败的处理逻辑 Log.e("StorageDemo", "获取下载链接失败", e); }); }).addOnFailureListener(e -> { // 上传失败的处理逻辑 Log.e("StorageDemo", "图片上传失败", e); });
三、获取已上传图片的下载链接
如果是要获取之前已经上传到Storage里的图片链接,直接拿到对应的Storage引用,调用getDownloadUrl()就行:
// 替换成你实际的图片路径 StorageReference existingImageRef = FirebaseStorage.getInstance().getReference().child("user_images/xxx.jpg"); existingImageRef.getDownloadUrl().addOnSuccessListener(uri -> { String imageUrl = uri.toString(); // 在这里使用这个链接即可 }).addOnFailureListener(e -> { // 处理错误 });
四、注意事项
- 别忘了在
AndroidManifest.xml里添加网络权限:<uses-permission android:name="android.permission.INTERNET" /> - 如果是从本地相册或相机取图,Android 6.0及以上版本需要动态申请读写权限,不然会拿不到图片Uri哦。
内容的提问来源于stack exchange,提问作者Zakaria Hossain
相关产品推荐
相关产品推荐

