从REST Web服务访问Blobstore的异常

时间:2013-07-01 13:52:07

标签: google-app-engine jersey blobstore

我正在尝试在Google App Engine上将图像上传到我的REST网络服务(使用Jersey)。

这是我的方法:

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadImage(@Context HttpServletRequest request){
        BlobstoreService bs = BlobstoreServiceFactory.getBlobstoreService();
        bs.createUploadUrl("/upload");

        Map<String, List<BlobKey>> blobFields = bs.getUploads(request);
        List<BlobKey> blobKeys = blobFields.entrySet().iterator().next().getValue();
        if (blobKeys != null && !blobKeys.isEmpty()) {
            BlobKey blobKey = blobKeys.get(0);
            System.out.println("MY KEY: "+blobKey.getKeyString());
        }

        return null;
    }

但我得到了这个例外:

Uncaught exception from servlet
java.lang.IllegalStateException: Must be called from a blob upload callback request.

在这一行:

Map<String, List<BlobKey>> blobFields = bs.getUploads(request);

我哪里错了?

1 个答案:

答案 0 :(得分:0)

检查以下示例。

https://developers.google.com/appengine/docs/java/blobstore/

您需要将createUploadUrl()的结果设置为表单标记上的action属性。