android - 无法从 Firebase 存储中检索图像:该位置不存在对象
问题描述
我的应用程序有问题。我将图像上传到 Firebase 存储,但现在我无法检索它,我收到一条错误消息:
E/StorageException: StorageException has occurred.
Object does not exist at location.
Code: -13010 HttpResult: 404
我的代码如下:
private void getImage() {
mStorage = FirebaseStorage.getInstance("gs://bucket");
mStorageReference = mStorage.getReference().child("/animal_images/animals" + System.currentTimeMillis() + ".png");
final long ONE_MEGABYTE = 1024 * 1024;
mStorageReference.getBytes(ONE_MEGABYTE).addOnSuccessListener(bytes -> {
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
DisplayMetrics displayMetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
mImageView.setMinimumHeight(displayMetrics.heightPixels);
mImageView.setMinimumWidth(displayMetrics.widthPixels);
mImageView.setImageBitmap(bitmap);
}).addOnFailureListener(e -> Log.e("TAG", "Cannot load image" + e.getMessage()));
}
我检查了存储路径,一切正常,我在这里做错了什么。任何建议。
解决方案
当您创建存储的引用时:
mStorageReference = mStorage.getReference().child("/animal_images/animals" + System.currentTimeMillis() + ".png");
你写System.currentTimeMillis()
的值不是恒定的,会不时改变。这意味着您基本上是在搜索由于时间变化而具有更改值的名称。名称为新时间的图像不存在。这就是你找不到它的原因。
推荐阅读
- bash - rsync 抑制外部陷阱的 SIGINT
- javascript - 是否可以在未检查的情况下更改离子无线电的颜色?
- python - Python 应用程序在运行时找不到图像(.png)文件
- java - JUnit5 移除 Allure 默认的 TestExecutionListener (AllureJunitPlatform)
- javascript - 检查 TypeScript 对象中的属性是否为空
- javascript - 将字符串拆分为 CamelCase 单词和大写首字母缩略词
- r - 过滤数据完全由用户定义 r - 多列和过滤器
- c# - Wpf Xaml 如何使用现有项目源将文本块添加到画布?
- java - 要求您使用 ACTION_OPEN_DOCUMENT 或相关 API 获得访问权限
- sql - 进行正则表达式替换所有列的 psql 导出的最佳方法是什么?