我正在尝试在blobstore上传中包含一些其他数据,然后我可以使用BlobInfo进行处理。根据{{3}}:
当Blobstore重写用户的请求时,上传文件的MIME部分将清空其正文,并将blob键添加为MIME部分标题。保留所有其他表单字段和部分并将其传递给上载处理程序。
这似乎在Dev Server上工作正常但在现场AppEngine上却没有。
从blobstore服务获得上传URL后,在客户端我正在做:
var formData = new FormData();
formData.append("upload-request", JSON.stringify({
myExtraData: "something"
}));
for (var i = 0; i < files.length; ++i) {
formData.append(files[i].name, files[i]);
}
xhr.open("POST", uploadUrl);
xhr.send(formData);
然后尝试在服务器端处理它:
log.warning("isMultipartContent: " + ServletFileUpload.isMultipartContent(req));
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iterator = upload.getItemIterator(req);
int count = 0;
while (iterator.hasNext()) {
++count;
FileItemStream item = iterator.next();
if (item.isFormField()) {
log.warning("Got a form field: " + item.getFieldName());
} else {
log.warning("Got an uploaded file: " + item.getFieldName() +
", name = " + item.getName());
}
}
log.warning("FileItem count = %s", count);
当我在本地开发服务器上运行它时,一切都运行良好,它很高兴地记录表单字段部分和重写(内容剥离)文件部分和计数2。
当我在实时App Engine上运行时,它仅记录isMultipart: true
和FileItem count = 0
与文档相反,实时服务器似乎正在从请求中删除所有mime部分。
请注意,blob仍可通过blobstore.get{File,Blob}Infos(req)
检索,但我无法访问随请求发送的其他数据。
有没有人见过这个?这是一个已知的错误还是我误解了文档?有没有人知道Python运行时是否也是如此?有人可以建议解决方法吗?
谢谢, 富
(道歉:这是来自App Engine Google Group的交叉发布;只有在我发布之后,我才会阅读有关支持移动到此处的帖子。)