我通过 HTTP 请求接收图像文件并将其存储在 Blobstore 中。我的代码与此处的代码类似:[https://developers.google.com/appengine/docs/java/blobstore/overview#Writing_Files_to_the_Blobstore][1]。
在为我存储的图像调用 blobkey 上的函数 ImagesService.getServingUrl() 时,我收到以下消息:
HTTP ERROR 500
Problem accessing /upload. Reason:
Failed to read image
Caused by:
java.lang.IllegalArgumentException: Failed to read image
at com.google.appengine.api.images.ImagesServiceImpl.getServingUrl(ImagesServiceImpl.java:282)
经过数小时的谷歌搜索,试图找到解决方案,我认为问题在于函数 closeFinally() 有问题。我认为这是因为在关闭我制作的新 blob 图像后,与 blob 关联的 FileStats 对象为 hasFinalizedName() 返回 false。然而,对于 isClosed() 和 isFinalized(),blob 返回 true。此外,它的完整路径是这样的:
/blobstore/writable:xFSAF_493dsfAfw489vFa...
如果它被关闭,我认为它不应该是可写的。
所以我的问题是:有没有人解决 getServingUrl 不起作用的问题?有没有人有解决方法getServingUrl?我想要为用户提供图片,并且我希望这些图片以静态文件的形式存在。带 blobstore 的 getServingUrl 似乎是我的最佳选择。我不想使用 Google Cloud Storage,因为对于我看到的每个 Blobstore 与 Google Cloud Storage 的问题,Blobstore 似乎都赢了。