我正在开发一个允许用户使用Java的Appengine应用程序 上传通过名为PaintWeb的HTML5画布库绘制的图像 (http://code.google.com/p/paintweb /)。
目前我有一个从中接收XMLHttpRequest POST的servlet paintweb javascript库作为formencoded图像。
Paintweb.js库发送XMLHttpRequest POST
send = 'dataURL=' + encodeURIComponent(ev.dataURL),
headers = {'Content-Type': 'application/x-www-form-urlencoded'};
自定义servlet将表单编码的图像数据解码为blob和 将数据存储区中的关联图形实体存储在
自定义servlet为数据存储区中的Blob提供服务 ContentType(“image / png”)如果我可以使用新的BlobstoreService和ImageService,我很好奇 上传我的HTML5画布图像并将其作为纯Blob提供的功能(如本教程中所示GWT BlobstoreService and ImageService)
根据文档(http://code.google.com/appengine/docs/java/blobstore/overview.html#Uploading_a_Blob),似乎主要的停止点是我需要POST一个表单:
<input type="file" name="myFile">
我认为Paintweb不可能。如果在服务器端有某种方法将Blob存储在Blobstorage(而不是数据存储区)中,那么可能会解决这个问题。 您可以获得不使用CPU配额来提供图像的好处。
使用Appengine URL Fetch是否可能,甚至是个好主意 服务并将图像blob上传到Blobstorage 服务器端的“createUploadURL()”。
http://code.google.com/appengine/docs/java/urlfetch/usingjavanet.html
似乎有可能,但不确定从长远来看它会节省我的资源(图像是简单的小图纸,可以比上传时间多看几次,所以我觉得我会得到受益于BlobstoreService的存储/服务。
答案 0 :(得分:2)
这里你最好的选择是使用XMLHTTPRequest,其中包含创建的图像的multipart / form-data编码体。可以构建它以匹配blobstore期望的内容。遵循的程序将是这样的:
为了做到这一点,你需要自己构建mime消息,或找到一个Javascript库来为你完成。