Java 文件已上载但未显示在Firebase实时数据库-Android Studio中
在我的android应用程序中,当我上传PDF文件时,它会上传到firebase存储中,但文件名和url不会显示在实时数据库中Java 文件已上载但未显示在Firebase实时数据库-Android Studio中,java,android,firebase-realtime-database,google-cloud-storage,firebase-storage,Java,Android,Firebase Realtime Database,Google Cloud Storage,Firebase Storage,在我的android应用程序中,当我上传PDF文件时,它会上传到firebase存储中,但文件名和url不会显示在实时数据库中 private void uploadPDFFile(Uri data) { final ProgressDialog progressDialog = new ProgressDialog(this); progressDialog.setTitle("Uploading..."); progressDialog.show();
private void uploadPDFFile(Uri data) {
final ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Uploading...");
progressDialog.show();
StorageReference reference = storageReference.child("uploads/"+System.currentTimeMillis()+".pdf");
reference.putFile(data)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Task<Uri> uri = taskSnapshot.getStorage().getDownloadUrl();
while(!uri.isComplete());
Uri url = uri.getResult();
uploadPDF uploadPDF = new uploadPDF(editPDFName.getText().toString(),url.toString());
databaseReference.child(databaseReference.push().getKey()).setValue(uploadPDF);
Toast.makeText(MainActivity.this, "File uploaded", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
}).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0*taskSnapshot.getBytesTransferred())/taskSnapshot.getTotalByteCount();
progressDialog.setMessage("Uploaded: " + (int) progress + "%");
}
});
}
private void uploadPdfile(Uri数据){
final ProgressDialog ProgressDialog=新建ProgressDialog(此);
progressDialog.setTitle(“上载…”);
progressDialog.show();
StorageReference=StorageReference.child(“uploads/”+System.currentTimeMillis()+”.pdf”);
reference.putFile(数据)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
任务uri=taskSnapshot.getStorage().getDownloadUrl();
而(!uri.isComplete());
Uri url=Uri.getResult();
uploadPDF uploadPDF=新的uploadPDF(editPDFName.getText().toString(),url.toString());
databaseReference.child(databaseReference.push().getKey()).setValue(uploadPDF);
Toast.makeText(MainActivity.this,“文件上载”,Toast.LENGTH_SHORT.show();
progressDialog.disclose();
}
}).addOnProgressListener(新的OnProgressListener(){
@凌驾
public void onProgress(UploadTask.TaskSnapshot TaskSnapshot){
双进度=(100.0*taskSnapshot.GetByTestTransferred())/taskSnapshot.getTotalByteCount();
setMessage(“上传:”+(int)进度+“%”;
}
});
}
请不要这样做:
while(!uri.isComplete());
即使它能工作,它也是一个紧密的循环,消耗的资源超过了需要
而是遵循Firebase文档中所示的模式:
reference.putFile(数据)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
Task uriTask=taskSnapshot.getStorage().getDownloadUrl();
uriTask.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时的公共无效(Uri){
Uri url=uriTask.getResult();
uploadPDF uploadPDF=新的uploadPDF(editPDFName.getText().toString(),url.toString());
databaseReference.child(databaseReference.push().getKey()).setValue(uploadPDF);
Toast.makeText(MainActivity.this,“文件上载”,Toast.LENGTH_SHORT.show();
progressDialog.disclose();
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
//处理任何错误
}
});
}
}).addOnProgressListener(
请不要这样做:
while(!uri.isComplete());
即使它能工作,它也是一个紧密的循环,消耗的资源超过了需要
而是遵循Firebase文档中所示的模式:
reference.putFile(数据)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
Task uriTask=taskSnapshot.getStorage().getDownloadUrl();
uriTask.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时的公共无效(Uri){
Uri url=uriTask.getResult();
uploadPDF uploadPDF=新的uploadPDF(editPDFName.getText().toString(),url.toString());
databaseReference.child(databaseReference.push().getKey()).setValue(uploadPDF);
Toast.makeText(MainActivity.this,“文件上载”,Toast.LENGTH_SHORT.show();
progressDialog.disclose();
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
//处理任何错误
}
});
}
}).addOnProgressListener(