java - 将文件从我的应用上传到 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();
}
});
}
}
);
}
解决方案
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"));
推荐阅读
- ios - iOS - 调度队列:NSOperationQueue 崩溃
- c# - 更改自动生成的 WCF 客户端的 XmlReaderSettings
- python-3.x - 从使用 GIS 库(如 geopandas、folium)的 Python 脚本制作 .exe
- vb.net - 保留我使用 vb.net 在 datagridview 的框中选中的值
- angular - 如何仅在请求时间超过 n 时显示加载栏
- c++ - 为什么我的 boost::filesystem::ofstream 不能与 std::ios_base::out 一起使用?
- apache-flink - 为可查询状态找到合适的任务管理器主机地址
- javascript - Polymer 2.0 纸张输入文件自定义样式
- python - 转移数据并创建新列 - python数据框
- javascript - 使用节点 js 每秒加载一次查询