Blobstore上传剥离mime部分生产但不是开发?

时间:2013-11-19 23:11:34

标签: java google-app-engine blobstore

我正在尝试在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: trueFileItem count = 0

与文档相反,实时服务器似乎正在从请求中删除所有mime部分。

请注意,blob仍可通过blobstore.get{File,Blob}Infos(req)检索,但我无法访问随请求发送的其他数据。

有没有人见过这个?这是一个已知的错误还是我误解了文档?有没有人知道Python运行时是否也是如此?有人可以建议解决方法吗?

谢谢, 富

(道歉:这是来自App Engine Google Group的交叉发布;只有在我发布之后,我才会阅读有关支持移动到此处的帖子。)

0 个答案:

没有答案