Do not hiccup on unset Content-Type fields in multipart file uploads
Just don't set the content_type parameter in that case. Fixes #985
This commit is contained in:
parent
f8702e455a
commit
4bb5be76d0
1 changed files with 14 additions and 3 deletions
|
|
@ -360,13 +360,24 @@ class UploadStorageFallbackHandler(tornado.web.RequestHandler):
|
||||||
for name, part in self._parts.iteritems():
|
for name, part in self._parts.iteritems():
|
||||||
if "filename" in part:
|
if "filename" in part:
|
||||||
# add form fields for filename, path, size and content_type for all files contained in the request
|
# add form fields for filename, path, size and content_type for all files contained in the request
|
||||||
fields = dict((self._suffixes[key], value) for (key, value) in dict(name=part["filename"], path=part["path"], size=str(os.stat(part["path"]).st_size), content_type=part["content_type"]).iteritems())
|
if not "path" in part:
|
||||||
|
continue
|
||||||
|
|
||||||
|
parameters = dict(
|
||||||
|
name=part["filename"],
|
||||||
|
path=part["path"],
|
||||||
|
size=str(os.stat(part["path"]).st_size)
|
||||||
|
)
|
||||||
|
if "content_type" in part:
|
||||||
|
parameters["content_type"] = part["content_type"]
|
||||||
|
|
||||||
|
fields = dict((self._suffixes[key], value) for (key, value) in parameters.iteritems())
|
||||||
for n, p in fields.iteritems():
|
for n, p in fields.iteritems():
|
||||||
key = name + "." + n
|
key = name + "." + n
|
||||||
self._new_body += b"--%s\r\n" % self._multipart_boundary
|
self._new_body += b"--%s\r\n" % self._multipart_boundary
|
||||||
self._new_body += b"Content-Disposition: form-data; name=\"%s\"\r\n" % key
|
self._new_body += b"Content-Disposition: form-data; name=\"%s\"\r\n" % key
|
||||||
self._new_body += b"\r\n"
|
self._new_body += b"\r\n"
|
||||||
self._new_body += p + b"\r\n"
|
self._new_body += b"%s\r\n" % p
|
||||||
elif "data" in part:
|
elif "data" in part:
|
||||||
self._new_body += b"--%s\r\n" % self._multipart_boundary
|
self._new_body += b"--%s\r\n" % self._multipart_boundary
|
||||||
value = part["data"]
|
value = part["data"]
|
||||||
|
|
@ -924,4 +935,4 @@ def path_validation_factory(path_filter, status_code=404):
|
||||||
def f(path):
|
def f(path):
|
||||||
if not path_filter(path):
|
if not path_filter(path):
|
||||||
raise tornado.web.HTTPError(status_code)
|
raise tornado.web.HTTPError(status_code)
|
||||||
return f
|
return f
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue