Android 正在使用firebase上载图像。无法获取上载的进度
I类型代码作为firebase存储结果的文档仅0.0Android 正在使用firebase上载图像。无法获取上载的进度,android,firebase,firebase-storage,Android,Firebase,Firebase Storage,I类型代码作为firebase存储结果的文档仅0.0 uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() { @Override public void onProgress(UploadTask.TaskSnapshot taskSnapshot) { double progress = 100.0* (taskSnapshot.getB
uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = 100.0* (taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
dialog.setMessage("uploading "+progress+" %");
dialog.show();
}
});
uploadTask.addOnProgressListener(新的OnProgressListener(){
@凌驾
public void onProgress(UploadTask.TaskSnapshot TaskSnapshot){
double progress=100.0*(taskSnapshot.GetByTestTransferred()/taskSnapshot.getTotalByteCount());
对话框.setMessage(“上传”+进度+“%”);
dialog.show();
}
});
这是您将图像上载到Firebase存储的方式祝您好运;)
private void uploadFromUri(Uri fileUri){
d(标记为uploadFromUri:src:+fileUri.toString());
//[开始获取儿童参考]
//获取存储文件在photos/.jpg的引用
最终StorageReference photoRef=storageRef.child(“图像”)
.child(fileUri.getLastPathSegment());
//[END get_child_ref]
//将文件上载到Firebase存储
//[开始时不包括]
showProgressDialog();
//[完]
Log.d(标记“uploadFromUri:dst:+photoRef.getPath());
photoRef.putFile(fileUri)
.addOnSuccessListener(此,新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
//上传成功
d(标记“uploadFromUri:onSuccess”);
//获取公共下载URL
mDownloadUrl=taskSnapshot.getMetadata().getDownloadUrl();
Log.d(“下载Url”,mDownloadUrl.toString());
//[开始时不包括]
hideProgressDialog();
//updateUI(mAuth.getCurrentUser());
//[完]
}
})
.addOnFailureListener(此,新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
//上载失败
w(标记“uploadFromUri:onFailure”,异常);
mDownloadUrl=null;
//[开始时不包括]
hideProgressDialog();
Toast.makeText(NewProduct.this,“错误:上载失败”,
吐司。长度(短)。show();
//updateUI(mAuth.getCurrentUser());
//[完]
}
});
}
//[结束从\u uri上传\u]
代码示例中有错误。看,别谢我。我是在文档中编写坏代码示例的人。;-)感谢@qbix(通过投票更新他的答案)。您也可以从我的博客中尝试:taskSnapshot.getTotalByteCount()的I get-1。这可能是什么问题。我知道数据是以256k的数据块上传的。但是为什么要传输的所有字节的总和都是负值呢?
private void uploadFromUri(Uri fileUri) {
Log.d(TAG, "uploadFromUri:src:" + fileUri.toString());
// [START get_child_ref]
// Get a reference to store file at photos/<FILENAME>.jpg
final StorageReference photoRef = storageRef.child("images")
.child(fileUri.getLastPathSegment());
// [END get_child_ref]
// Upload file to Firebase Storage
// [START_EXCLUDE]
showProgressDialog();
// [END_EXCLUDE]
Log.d(TAG, "uploadFromUri:dst:" + photoRef.getPath());
photoRef.putFile(fileUri)
.addOnSuccessListener(this, new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// Upload succeeded
Log.d(TAG, "uploadFromUri:onSuccess");
// Get the public download URL
mDownloadUrl = taskSnapshot.getMetadata().getDownloadUrl();
Log.d( "The Download Url", mDownloadUrl.toString());
// [START_EXCLUDE]
hideProgressDialog();
// updateUI(mAuth.getCurrentUser());
// [END_EXCLUDE]
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Upload failed
Log.w(TAG, "uploadFromUri:onFailure", exception);
mDownloadUrl = null;
// [START_EXCLUDE]
hideProgressDialog();
Toast.makeText(NewProduct.this, "Error: upload failed",
Toast.LENGTH_SHORT).show();
// updateUI(mAuth.getCurrentUser());
// [END_EXCLUDE]
}
});
}
// [END upload_from_uri]