我正在尝试在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);
我哪里错了?
答案 0 :(得分:0)
检查以下示例。
https://developers.google.com/appengine/docs/java/blobstore/
您需要将createUploadUrl()的结果设置为表单标记上的action属性。