android - 图片上传后如何获取图片下载地址
问题描述
我正在尝试创建应用程序 firebase 图像上传。
干草伙伴,我在获取会话的图像下载 URL 中遇到了一些问题。
我的firebase版本是:
implementation 'com.google.firebase:firebase-auth:16.0.5'
implementation 'com.google.firebase:firebase-storage:16.0.5'
我的下载 URL 获取代码是:
String profileimageurl = taskSnapshot.getMetadata().getReference().getDownloadUrl().toString();
如何解决这个问题,我的错误是:
java.io.FileNotFoundException: /com.google.android.gms.tasks.zzu@527ce2f (No such file or directory)
I/Glide: Root cause (2 of 3)
java.io.FileNotFoundException: open failed: ENOENT (No such file or directory)
I/Glide: Root cause (3 of 3)
java.io.FileNotFoundException: open failed: ENOENT (No such file or directory)
该图像已上传到我的 Firebase 存储中,但无法访问
解决方案
最后,
private void uriImageUpload() {
final StorageReference storageReference = FirebaseStorage.getInstance().getReference("myprofile/" + System.currentTimeMillis() + ".jpg");
if (urimageurl != null) {
storageReference.putFile(urimageurl)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Toast.makeText(getApplicationContext(), "Image Uploaded Successfully", Toast.LENGTH_LONG).show();
//TODO Here is the problem
// profileimageurl = taskSnapshot.getDownloadUrl().toString();
String myprofileurl = taskSnapshot.getMetadata().getReference().getDownloadUrl().toString();
Log.d(TAG, "Profile image uploading url " + myprofileurl);
storageReference.getDownloadUrl().addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
profileimageurl=task.getResult().toString();
Log.i("URL",profileimageurl);
}
});
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getApplicationContext(), "Image Uploading was failed", Toast.LENGTH_LONG).show();
}
});
}
}
只需添加
storageReference.getDownloadUrl().addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
profileimageurl=task.getResult().toString();
Log.i("URL",profileimageurl);
}
});
就这样。
推荐阅读
- python - 导出由子流程解决和选择的路径的方法
- r - 在 R 工作室中,我收到一个带有交互的双向 ANOVA 的事后测试 TukeyHSD 错误
- python - 在 Amazon Linux 实例上运行 python 脚本时出现库错误
- mysql - 使用存储过程从不同的临时表更新主表 - MySQL
- html - 您如何使用 html 和 css 进行有条件的垂直换行
- python - 如何压缩python for循环
- c++ - Coverity 抱怨 htonl 操作数,但为什么呢?
- linux - 在我的 Mac 上删除 Anaconda 时遇到问题
- javascript - 使用缩放在 p5.js 中翻转图像
- github - 为什么我的 gh-pages 的 unfurl 'og:image' 没有出现在任何平台上?