最近我在Android上上传文件时遇到了一个问题。在Unity编辑器上它运行得很好,但是每当我在Android上运行它时,我总是得到这个错误:
系统聚合异常:引发了类型为“系统.AggregateException”的异常。无内容提供者:/存储/模拟/0/安卓/数据/com. com.应用/文件/上传/ppp/master.json
下面是我用来上传文件到存储的代码:
Firebase.Storage.StorageReference f_ref = storage_ref.Child(referencePath);
print("Reference path: " + referencePath);
// Upload the file
f_ref.PutFileAsync(filePath)
.ContinueWith((Task<StorageMetadata> task) =>
{
if (task.IsFaulted || task.IsCanceled)
{
Debug.Log(task.Exception.ToString());
print("Couldn't upload " + filePath);
// Uh-oh, an error occurred!
}
else {
Firebase.Storage.StorageMetadata metadata = task.Result;
string download_url = metadata.DownloadUrl.ToString();
Debug.Log("download url = " + download_url);
}
});
文件存储在依赖于设备的永久文件路径中。我尝试有目的地上传不存在的文件路径,但收到了“FileNotFound”异常,因此我确定我尝试上传的文件的路径是正确的。
我将非常感谢任何帮助弄清楚这个异常意味着什么以及如何修复它。提前感谢!
5条答案
按热度按时间apeeds0o1#
请改用
inputStream
和putStream
:pieyvz9o2#
也许您应该传递一个格式为Like This的URI
文件:///sd卡/您的文件路径
oprakyz73#
我也遇到了同样的问题,而E. Abdel的回答让我找到了正确的方向。我试图上传一个用
BinaryFormatter
保存的文件我得到了完全相同的错误,然后我尝试了一种不同的上传方式。使用
PutStreamAsync
而不是PutFileAsync
,我猜这需要用于BinaryFormatter
的序列化文件。qnakjoqk4#
在我的例子中,我遇到了同样的错误(Firebase.Storage.StorageException:没有内容提供商)只能用Android上传文件。
阅读了E. Abdel的答案后,我发现了以下这些在C#中的Unity解决方案。
它在Unity编辑器和Android中工作,上传指定文件路径的文件,在我的例子中file_path是:/storage/emulated/0/file_name.png
92dk7w1h5#
遇到了同样的问题。通过将“file://”放在URI前面并使用Uri.parse对其进行解析来解决此问题,解析为: