I ran into a GAE bug doing something similar. The majority of my form fields worked fine, but some fields with longer data (apparently more than 76 characters long) got corrupted. https://code.google.com/p/googleappengine/issues/detail?id=10109 There's a workaround included in that bug report.
I didn't have any issues with form fields getting entirely stripped out, though it could be that your form field is there but disappeared when it failed some sort of parsing. On Tuesday, November 19, 2013 10:40:37 AM UTC-5, Rich wrote: > > Hi, > > I'm trying to include some additional data in a blobstore upload which I > can then process with the BlobInfo. According to > https://developers.google.com/appengine/docs/java/blobstore/ : > > *When the Blobstore rewrites the user's request, the MIME parts of the > uploaded files have their bodies emptied, and the blob key is added as a > MIME part header. All other form fields and parts are preserved and passed > to the upload handler. * > > This seems to be working fine on the Dev Server but *not* on the live > AppEngine. > > Having got the upload URL from the blobstore service, on the client-side > I'm then doing: > > var formData = new FormData(); > formData.append("upload-request", JSON.stringify({ > myExtraData: "something" > })); > > for (var idx = 0; idx < files.length; idx++) { > formData.append(files[idx].name, files[idx]); > } > > xhr.open("POST", uploadUrl); > xhr.send(formData); > > And then trying to process it on the server side with: > > 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); > > When I run this on the local Dev server, everything works perfectly and it > happily logs both the form field part and the re-written (content-stripped) > file part and a count of 2. > > When I run it on the live App Engine, it logs: > isMultipart: true > FileItem count = 0 > > It seems that the live server, contrary to the documentation, is stripping > all the mime parts from the request. > > Note, that the blobs are still retrievable > with blobstore.get{File,Blob}Infos(req), but I cannot access the additional > data that was sent with the request. > > Has anyone seen this before? Is this is a known bug or have I > misinterpreted the docs? Does anyone know if the same is true in the Python > runtime? Can anyone suggest a workaround? > > Thanks, > Rich > > > -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/google-appengine. For more options, visit https://groups.google.com/groups/opt_out.
