[英]uploading PDF to firebase from phone
所以我正在为一个项目编写代码,用户可以在其中以 PDF 格式上传问题和答案,到目前为止我完成的代码会打开文件管理器,但是当我 select 一个文件时它会关闭而没有任何响应。
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) {
uploadFile(data.getData());
}
}
private void uploadFile(Uri data) {
final ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Loading...");
progressDialog.show();
StorageReference reference = storageRef.child("UploadPaper/PastPaper/PDF" + 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();
paperUpload = new PaperUpload(pdfName.getText().toString(), url.toString());
dbRef.child(dbRef.push().getKey()).setValue(paperUpload);
Toast.makeText(UploadOrEdit.this, "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 + "%");
}
});
}
这是我在文件管理器上单击文件时的日志 cat output:
W/InputMethodManager: startInputInner : InputBindResult == null need restart
W/IInputConnectionWrapper: showStatusIcon on inactive InputConnection
V/FA: Activity resumed, time: 8459656
找到了一个可以帮助您解决问题的链接:
https://www.simplifiedcoding.net/firebase-storage-uploading-pdf/
public void btClick(View view) {
chooseDoc();
}
private void chooseDoc() {
Intent intent = new Intent();
intent.setType("application/pdf");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Document"), PICK_PDF_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_PDF_CODE && resultCode == RESULT_OK && data != null && data.getData() != null) {
if (data.getData() != null) {
filepath=data.getData();
// UploadFile();
// Toast.makeText(this, "pdf"+str, Toast.LENGTH_SHORT).show();
} else
Toast.makeText(this, "NO FILE CHOSEN", Toast.LENGTH_SHORT).show();
}
}
private void UploadFile() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String name = user.getEmail();
if (filepath != null) {
Date dateObject = new Date(System.currentTimeMillis());
final ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Uploading...");
progressDialog.show();
StorageReference sref = storageReference.child(name + ".pdf");
sref.putFile(filepath)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
progressDialog.dismiss();
Toast.makeText(ApplyJob.this, "Uploaded Succesfully", Toast.LENGTH_SHORT).show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(ApplyJob.this, "Failed"+e, Toast.LENGTH_SHORT).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(@NonNull UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0 * taskSnapshot.getBytesTransferred() )/ taskSnapshot
.getTotalByteCount();
progressDialog.setMessage("Uploaded " + (int) progress + "%");
}
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.