我正在使用 Java 开发 Appengine 应用程序,该应用程序允许用户上传通过名为 PaintWeb ( http://code.google.com/p/paintweb/ ) 的 HTML5 画布库绘制的图像。
目前我有一个servlet,它从paintweb javascript库接收XMLHttpRequest POST作为formencoded图像。
Paintweb.js 库发送 XMLHttpRequest POST
send = 'dataURL=' + encodeURIComponent(ev.dataURL), headers = {'Content-Type': 'application/x-www-form-urlencoded'};
自定义 servlet 将表单编码的图像数据解码为 blob,并将其与关联的绘图实体一起存储在 Datastore 中
自定义 servlet 以 ContentType("image/png") 为数据存储区中的 Blob 提供服务BlobstoreService 和 ImageService)
根据文档(http://code.google.com/appengine/docs/java/blobstore/overview.html#Uploading_a_Blob),主要的停止点似乎是我需要发布一个表单:
<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 提供服务。