gpt4 book ai didi

java - Google App Engine Blobstore 和 ReSTLet - "Must be called from a blob upload callback request"

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:34 26 4
gpt4 key购买 nike

错误

Caused by: java.lang.IllegalStateException: Must be called from a blob upload callback request. at com.google.appengine.api.blobstore.BlobstoreServiceImpl.getUploads(BlobstoreServiceImpl.java:169)

代码

public class UserUploadProfilePictureResource extends ServerResource {

@Post
public void handleBlobstoreUpload(Representation entity) {

Representation rep =null;

if (entity !=null) {

if (MediaType.MULTIPART_FORM_DATA.equals(entity.getMediaType(), true)) {
Request restletRequest = getRequest();
HttpServletRequest servletRequest = ServletUtils.getRequest(restletRequest);

BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();

Map<String, List<BlobKey>> blobs = blobstoreService.getUploads(servletRequest);

可能的解决方案(但我不想要的)

首先。我不想调用第二个 HttpServlet。

其次。关于这篇文章,有手动编写文件的解决方案:

Google 表示如下:

Deprecated: The Files API feature used here to write files to Blobstore is going to be removed at some time in the future, in favor of writing files to Google Cloud Storage and using Blobstore to serve them.

可能的解决方案 2(但只是解决方法的概念)

http://www.cloudave.com/1055/the-new-google-app-engine-blobstore-api-first-thoughts/

Bret Slatkin notes that when the API manufactures the POST URL to be used for uploading the files, it creates a unique one-time URL which which mitigates any potential sniffing.

This fits perfectly for the scenario when you’re rendering a web form to be submitted by the user. But, it makes things harder if you’re trying to provide a REST API that allows uploading files (think of something like TwitPic for example). In this case you’ll have to write your own render that simulates what a web form would do (get the files, create random POST URL, call it, …)

问题

在 Google 应用引擎中存储图像的最佳方法是什么?有比 blobstore 更好的方法吗?如何在 blobstore 中存储图像?

最佳答案

我认为您最好的选择是 Google Cloud Storage Client Library,并将得到官方支持,https://developers.google.com/appengine/docs/java/googlecloudstorageclient/看起来他们将不再支持以编程方式写入 blobstore,可能是为了促进云存储在 blobstore 上的使用。图像和 blobstore api 在 GCS 上工作,用于创建和存储 blobstore key 以及生成图像 url/调整大小等。

另一种我没有深入研究的非官方方式是复制 Files Api 源并自己维护它,它可能使用不会消失或始终可用的 rpc 调用,但我不太清楚。

关于java - Google App Engine Blobstore 和 ReSTLet - "Must be called from a blob upload callback request",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18042248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com