尝试在签名更新后加载图像时出现FileNotFoundException

时间:2019-03-26 19:00:22

标签: android android-glide

我正在使用Glide从Amazon S3获取一组的图像。这些图像是动态URL(预签名URL),因此我使用了该方法来为GlideUrl创建一个自定义类,该类将覆盖该图像的getCacheKey()。组的缓存键保持不变。一切正常,Glide第一次从远程加载图像,其余时间从内存或磁盘高速缓存加载图像。

现在,我添加了用户可以更改组图像的功能。在这种情况下,尽管高速缓存键保持不变,但是需要刷新图像(再次从服务器加载)。为此,我在IntegerVersionSignature中使用了signature()方法。因此,将更改后的图像上传到S3服务器时,我将更新要加载的组图像的签名。

我面临的问题是每次将图像上传到服务器后,我调用Glide用新的签名加载URL,但失败,出现FileNotFoundException。基本上,它尝试加载远程映像,但返回FileNotFoundException。尽管在重新启动该应用程序后,它仍能够从服务器获取新图像。但是在同一实例中进行签名更新时,它将带有FileNotFound返回。

这是我的一般Glide电话外观

                    GlideApp
                            .with(mContext)
                            .asBitmap()
                            .error(error_image)
                            .placeholder(placeholder_image)
                            .signature(new IntegerVersionSignature(group_image_meta_data)
                            .load(new GlideUrlWithQueryParameter(baseUrl, url)
                            .listener(new RequestListener<Bitmap>() {
                                //
                                @Override
                                public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
                                    Log.e(TAG, "Error Loading ", e);
                                    return false;
                                }

                                @Override
                                public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
                                    Log.d(TAG, "Loaded image successfully");
                                    return false;
                                }
                            })

                            .into(groupImage);

这是我得到的例外-

错误加载 com.bumptech.glide.load.engine.GlideException类:无法加载资源     原因有1:     java.io.FileNotFoundException(pre_signed_url)     致电GlideException#logRootCauses(String)了解更多详细信息     原因(1之1):com.bumptech.glide.load.engine.GlideException类:提取数据失败,java.io.InputStream类,REMOTE

我正在使用Glide 4.8.0

我缺少任何重要的步骤吗?或任何其他人可以提供的其他指针。

谢谢!

0 个答案:

没有答案