You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:01:36