Java 我无法从firebase获取DownloadURL()。请任何人在这里帮忙';这是我的代码和错误。(我正在使用Fragment)
这是我的代码:Java 我无法从firebase获取DownloadURL()。请任何人在这里帮忙';这是我的代码和错误。(我正在使用Fragment),java,android,firebase,firebase-realtime-database,firebase-storage,Java,Android,Firebase,Firebase Realtime Database,Firebase Storage,这是我的代码: private void uploadFile() { //checking if file is available if (filePath != null) { //displaying progress dialog while image is uploading final ProgressDialog progressDialog = new ProgressDialog(getContext());
private void uploadFile() {
//checking if file is available
if (filePath != null) {
//displaying progress dialog while image is uploading
final ProgressDialog progressDialog = new ProgressDialog(getContext());
progressDialog.setTitle("Uploading");
progressDialog.show();
//getting the storage reference
StorageReference sRef = storageReference.child(Constants.STORAGE_PATH_UPLOADS + System.currentTimeMillis() + "."
+ getFileExtension(filePath));
UploadTask uploadTask = storageReference.putFile(filePath);
Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
// Continue with the task to get the download URL
return sRef.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
Uri downloadUri = task.getResult();
Postmember postmember = new Postmember();
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
postmember.setType("iv");
String id = mDatabase.push().getKey();
mDatabase.child(id).setValue(postmember);
} else {
// Handle failures
// ...
}
}
});
}
}
E/StorageException: StorageException has occurred.
An unknown error occurred, please check the HTTP result code and inner exception for server response.
Code: -13000 HttpResult: 0
E/StorageException:无法上载到getRoot。您应该上传到一个存储位置,例如.getReference('image.png').putFile。。。
java.lang.IllegalArgumentException:无法上载到getRoot。您应该上传到一个存储位置,例如.getReference('image.png').putFile。。。
位于com.google.firebase.storage.UploadTask.run(UploadTask.java:213)
位于com.google.firebase.storage.StorageTask.lambda$getRunnable$7$StorageTask(StorageTask.java:1072)
在com.google.firebase.storage.-$$Lambda$StorageTask$q9YBoR_A8LB-jxtcx8jrqvabazz.run(未知来源:2)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
在java.lang.Thread.run(Thread.java:923)中出现以下错误:
E/StorageException:无法上载到getRoot。您应该上传到存储位置,例如.getReference('image.png').putFile
说得很清楚问题是什么。如果没有名称和文件扩展名,则无法将文件直接上载到根目录。因此,给您带来麻烦的线路是:
UploadTask uploadTask = storageReference.putFile(filePath);
如果不了解如何定义storageReference
对象,我可以说它很可能指向根目录。要解决此问题,应将上述代码行更改为:
StorageReference sRef = storageReference.child(Constants.STORAGE_PATH_UPLOADS + System.currentTimeMillis() + "."
+ getFileExtension(filePath));
UploadTask uploadTask = sRef.putFile(filePath);
因此,应该使用的正确对象是
sRef
,由于它指向正确的路径,而不是storageReference
嘿,Alex mamo,我解决了这个问题,但我知道我遇到了一个非常奇怪的问题,每次尝试上载图像或文件时,我都会遇到这个错误。错误-W/NetworkRequest:没有请求的身份验证令牌没有请求的应用程序检查令牌。错误-W/NetworkRequest:没有请求的身份验证令牌没有请求的应用程序检查令牌。我从来没有在我的申请书中要求auth听说你解决了这个问题。这听起来像是一个新问题,基本上应该被视为另一个问题,因为它无法在评论中得到回答。因此,为了遵守这个社区的规则,请使用自己的问题发布一个新问题,这样我和其他Firebase开发人员可以帮助您。您好,先生,请进一步检查我的问题-