mas*_*_99 7 java google-app-engine file-upload file blobstore
错误
引起:java.lang.IllegalStateException:必须从blob上传回调请求中调用.在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);
Run Code Online (Sandbox Code Playgroud)
可能的解决方案(但我不想要)
第一.我不想调用第二个HttpServlet.
第二.关于这篇文章,有手动编写文件的解决方案:
谷歌说:
不推荐使用:此处用于将文件写入Blobstore的文件API功能将在将来的某个时间删除,有利于将文件写入Google云端存储并使用Blobstore为其提供服务.
可能的解决方案2(但只是解决方法的概念)
http://www.cloudave.com/1055/the-new-google-app-engine-blobstore-api-first-thoughts/
Bret Slatkin指出,当API制作用于上传文件的POST URL时,它会创建一个唯一的一次性URL,以减轻任何可能的嗅探.
这非常适合用于呈现用户提交的Web表单的情况.但是,如果您尝试提供允许上传文件的REST API(例如,想想像TwitPic这样的东西)会让事情变得更难.在这种情况下,您将必须编写自己的渲染,模拟Web表单将执行的操作(获取文件,创建随机POST URL,调用它,...)
题
在Google应用引擎中存储图片的最佳方法是什么?有没有比blobstore更好的方法?如何在blobstore中存储图像?
我认为你最好的并且将得到官方支持的选择是 Google Cloud Storage Client Library,https://developers.google.com/appengine/docs/java/googlecloudstorageclient/看起来他们将不再支持以编程方式写入 blobstore可能是为了促进云存储在 blobstore 上的使用。图像和 blobstore api 在 GCS 上工作,用于创建和存储 blobstore 密钥以及生成图像 url/调整大小等。
我没有深入研究的另一种非官方方法是复制 Files Api 源并自己维护它,它可能使用不会消失或始终可用的 rpc 调用,但我不确切知道。
归档时间: |
|
查看次数: |
2277 次 |
最近记录: |