我通过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。此外,它的完整路径是这样的:
/ Blob存储区/可写:xFSAF_493dsfAfw489vFa ...
如果它关闭了,我认为它不应该是可写的。
所以我的问题是:有没有人有getServingUrl无法正常工作的解决方案?有没有人有解决方法getServingUrl?我想要为用户提供图片,我希望这些图片作为静态文件存在。带有blobstore的getServingUrl似乎是我的最佳选择。我不想使用Google云端存储,因为对于我看到的每个Blobstore与Google云存储问题,Blobstore似乎都赢了。