无法将图片上传到Firebase中:发生未知错误,请检查HTTP结果代码和内部异常以获取服务器响应

时间:2019-06-10 15:27:36

标签: android firebase-storage

这里是获取所选图像字符串的方法,

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // Check which request we're responding to
    if (requestCode == OPEN_MEDIA_PICKER) {
        // Make sure the request was successful
        if (resultCode == RESULT_OK && data != null) {
            selectionResult = data.getStringArrayListExtra("result");
        }

    }
}

这是上传函数,我认为问题可能出在我使用URI.parse()将String转换为URI时。

有人可以建议一种更好的上传图片的方法

private void uploadImages() {
    simpleProgressBar.setVisibility(View.VISIBLE);

    insideImageStorageReference = FirebaseStorage.getInstance().getReference("HOSTELS").child("2");

    for( i=0;i<selectionResult.size();i++){
        StorageReference fileReference = insideImageStorageReference.child("INSIDE_IMAGE"+i+ "." + getFileExtension(Uri.parse(selectionResult.get(i))));
        if (selectionResult.get(i) != null)
        fileReference.putFile(Uri.parse(selectionResult.get(i)))
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        taskSnapshot.getStorage().getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {
                                String download_rul = uri.toString();
                                insideImgRef.child("PIC"+(i+1)).setValue(download_rul);
                                simpleProgressBar.setProgress(i+10);


                            }
                        });

                    }
                })

LOGCAT错误之后从设备(仿真器)中选择所有图像

W/StorageTask: unable to change internal state to: INTERNAL_STATE_CANCELED 
isUser: false from state:INTERNAL_STATE_IN_PROGRESS
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
No content provider: /storage/emulated/0/DCIM/Camera/IMG_20190610_200142_1.jpg
java.io.FileNotFoundException: No content provider: /storage/emulated/0/DCIM/Camera/IMG_20190610_200142_1.jpg
    at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1131)
    at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:982)
    at android.content.ContentResolver.openInputStream(ContentResolver.java:702)
    at com.google.firebase.storage.UploadTask.<init>(com.google.firebase:firebase-storage@@17.0.0:133)
    at com.google.firebase.storage.StorageReference.putFile(com.google.firebase:firebase-storage@@17.0.0:260)
    at com.teepe.teepestayscontrollerapp.addImages.uploadImages(addImages.java:132)
    at com.teepe.teepestayscontrollerapp.addImages.access$000(addImages.java:31)
    at com.teepe.teepestayscontrollerapp.addImages$2.onClick(addImages.java:74)
    at android.view.View.performClick(View.java:5610)
    at android.view.View$PerformClick.run(View.java:22265)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6077)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
StorageException has occurred.

0 个答案:

没有答案