首页 > 解决方案 > 将文件从我的应用上传到 Firebase 的问题

问题描述

嗨,我在从我的应用程序上传文件到 Firebase 时遇到问题。我正在按照 Android Studio Firebase 助手创建它,但它不起作用,它会从故障功能中打印出文本给我。在 Logcat 上也打印了这个:

发生未知错误,请检查服务器响应的 HTTP 结果代码和内部异常。代码:-13000 HttpResult:0 2018-12-20 23:07:23.680 30476-30564/com.example.johny.test E/StorageException: /storage/emulated/0 (是一个目录) java.io.FileNotFoundException: / storage/emulated/0(是一个目录)

riversRef.putFile(files)从下面的代码行

感谢您的时间

upload.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){

                try {
                    File file=new File(Environment.getExternalStorageDirectory().getAbsolutePath(),FILE_NAME);
                    nameoffile=FILE_NAME;
                    FileOutputStream fos=new FileOutputStream (file);
                    DataOutputStream dout = new DataOutputStream(fos);
                    //dout.writeInt(SignalData.size()); // Save line count
                    for(int i=0;i<SignalData.size();i++){
                        dout.writeChars(SignalData.get(i));
                    }
                    dout.close(); // ... and close.
                    //Toast.makeText(getActivity(),"File Successful Created",Toast.LENGTH_LONG).show();
                } catch (IOException exc) {
                    exc.printStackTrace();
                    Toast.makeText(getActivity(),"File NOT Created",Toast.LENGTH_LONG).show();
                }


                Uri files = Uri.fromFile(new File(Environment.getExternalStorageDirectory().getAbsolutePath()));
                StorageReference riversRef = mStorageRef.child(nameoffile);

                riversRef.putFile(files)
                        .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                            @Override
                            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                                // Get a URL to the uploaded content
                                Toast.makeText(getActivity(),"File Upload Successfully",Toast.LENGTH_LONG).show();
                            }
                        })
                        .addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception exception) {
                                // Handle unsuccessful uploads
                                // ...
                                Toast.makeText(getActivity(),"File Didn't Upload",Toast.LENGTH_LONG).show();
                            }
                        });
                }
            }
        );
    }

标签: javaandroidfirebasefirebase-storage

解决方案


E/StorageException: /storage/emulated/0 (是一个目录) java.io.FileNotFoundException: /storage/emulated/0 (是一个目录)

如错误所述,您在这里指的是目录,而不是文件

Uri files = Uri.fromFile(new File(Environment.getExternalStorageDirectory().getAbsolutePath()));

检查您试图从哪里找到文件并更改它的路径。

Firebase 存储文档中,您可以找到有关如何查找文件的示例。

您还可以像这样指定文件的位置

Uri file = Uri.fromFile(new File("path/to/images/rivers.jpg"));

推荐阅读