我正在尝试将我添加到Android设备上的firebase存储中的图像拉入其中。每次运行时我都会从onFailureListener()
E / StorageException(9646):发生未知错误,请检查HTTP结果代码和服务器响应的内部异常。 E / StorageException(9646):代码:-13000 HttpResult:0
我还将存储权限更改为暂时具有读/写功能,以确保不存在问题。
final ImageView test = (ImageView) findViewById(R.id.test_image);
StorageReference ref = storage.getReferenceFromUrl("gs://my-project.appspot.com/test_image.png");
ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Log.d(TAG, "Successfully loaded uri");
test.setImageURI(uri);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(TAG, "Failed loaded uri: " + e.getMessage());
}
});
答案 0 :(得分:8)
我刚注意到httpresult为零。这表明从未提出过获取下载URL的请求。一种方法是,如果您的手机上没有更新播放服务。您将知道这是错误,因为adb logcat将显示“无法加载存储网络层”的错误。
要解决此问题,请在手机上更新播放服务。有几种方法可以做到这一点。我发现最简单的方法是安装应用程序“播放服务信息”以在Play商店中查看播放服务,然后点击更新(如果可用)。
答案 1 :(得分:4)
在您的设备上更新Google Play服务 ,而不是在您的gradle脚本中(尽管也是如此)。
由于仅仅浏览了benjamin-wulfe的答案以及互联网上的其他人,我的头靠在墙上大约一个小时后,我回来仔细阅读。希望这会帮助别人避免我的错误!
答案 2 :(得分:3)
我遇到了同样的问题,解决方法是:
StorageReference storageRef = storage.getReferenceFromUrl("gs:<bucket address>");
StorageReference spaceRef = storageRef.child("child name");
答案 3 :(得分:1)
您需要拥有最新的Google Play服务才能避免这种情况。
此外,在firebase控制台中启用匿名身份验证。
答案 4 :(得分:0)
使用快速入门 Firebase存储示例时遇到了同样的问题。问题是该应用程序没有请求Android M上存储的运行时权限。
因此,请尝试检查存储权限。
答案 5 :(得分:0)
就我而言,我是从下载网址创建StorageRef而不是存储位置。
String storageLocation="gs://bbeplayer.appspot.com/heart.png";
String downloadURL="https://firebasestorage.googleapis.com/v0/b/bbeplayer.appspot.com/o/heart.png?alt=media&token=41a22961-daf1-433e-a580-e65144d34ab3";
StorageReference reference;
reference=FirebaseStorage.getInstance().getReferenceFromUrl(downloadURL);
所以我改变了reference=FirebaseStorage.getInstance().getReferenceFromUrl(downloadURL);
到
reference=FirebaseStorage.getInstance().getReferenceFromUrl(storageLocation);
答案 6 :(得分:0)
我知道为时已晚,但是对我而言,上述所有方法均无效,唯一的解决方法是将Cloud Storage Android库的依赖关系更新为最新版本19.1.0。
Firebase助手添加的依赖项很旧。
答案 7 :(得分:0)
我最近遇到了这个问题,而我的原因是由于 Firebase Storage 中的权限,我不允许阅读,编写规则,因此我将它们更改为This Worked for me
答案 8 :(得分:0)
我遇到了这个问题,因为在调用FileDownloadTask
时我为getFile()
提供了无效的系统文件路径
在这里,由于downloadDirectory无效而引发了发布
String fileName = "...";
final File localFile = new File(downloadDirectory, fileName);
FileDownloadTask downloadTask = FirebaseStorage.getInstance()
.getReference()
.child("myChild")
.child(fileName)
.getFile(localFile);
答案 9 :(得分:0)
我也遇到了同样的错误,最终意识到我提供了错误的存储位置。更正我的代码后工作正常,所以你也可以试试这个:
Uint8List filename=(widget.imageData);
ref=fb.FirebaseStorage.instance.ref().child("images}");
await ref.putData(widget.imageData).whenComplete(() async{
await ref.getDownloadURL().then((value) {
imgRef.add({
"url":value,
"name":cond.data()["name"],
"postuser-id":cond.data()["uid"]
});
});
答案 10 :(得分:-1)
您需要上传另一个KB大小更多的文件,这对我有用!