繁体   English   中英

从手机上传 PDF 到 firebase

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM