im正在基于pdf生成的Android项目上工作并存储在firebase存储器中,并获得了Download url以下载文件,我的文件在pdf生成时会自动选择并上传,但无法获取在Firebase存储设备上上传的文件的下载URL。我对firebase有点陌生,所以这是下面的代码
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/PDF";
File file = new File(path, "report.pdf");
Uri filepicked = Uri.fromFile(file);
StorageReference fileReference = mStorageRef.child(cusname +" "+"report" + "." +".pdf");
fileReference.putFile(filepicked);
StorageReference storageReference = fileReference.child(cusname+" "+"report");
storageReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String link = uri.toString();
DatabaseReference reference = mDatabaseRef.child(cusname+" "+
"report");
reference.setValue(link);
}
});
当我在上传过程中运行应用程序时,它会上传文件,但不要给我下载网址并显示此错误
//StorageException: StorageException has occurred.
Object does not exist at location.
Code: -13010 HttpResult: 404
E/StorageException: { "error": { "code": 404, "message": "Not Found. Could not get object" }}
java.io.IOException: { "error": { "code": 404, "message": "Not Found. Could not get object" }}//
答案 0 :(得分:0)
您在这里遇到两个问题。首先,putFile是异步的,需要一些时间才能完成,但是您的代码不会等待上传完成。它试图在上传开始后但上传完成之前立即访问下载。
此外,您正在构建另一个存储引用对象以获取下载URL。第一个附加了.pdf,但另一个没有。为什么不使用与上传文件相同的引用?