From: Kenneth Reitz Date: Sun, 13 Nov 2011 05:36:22 +0000 (-0500) Subject: Guess filename. X-Git-Tag: v0.8.0~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0086f97b6553ac323565e8653eae678e380219ae;p=services%2Fpython-requests.git Guess filename. Closes #192 --- diff --git a/requests/models.py b/requests/models.py index e70d9db..79a15fc 100644 --- a/requests/models.py +++ b/requests/models.py @@ -28,7 +28,7 @@ from .exceptions import ( Timeout, URLRequired, TooManyRedirects, HTTPError, ConnectionError) from .utils import ( get_unicode_from_response, stream_decode_response_unicode, - decode_gzip, stream_decode_gzip) + decode_gzip, stream_decode_gzip, guess_filename) @@ -346,7 +346,8 @@ class Request(object): fields = dict(self.data) for (k, v) in self.files.items(): - fields.update({k: (k, v.read())}) + fields.update({k: (guess_filename(k) or k, v.read())}) + (body, content_type) = encode_multipart_formdata(fields) else: pass diff --git a/requests/utils.py b/requests/utils.py index bd7dead..0249e9d 100644 --- a/requests/utils.py +++ b/requests/utils.py @@ -20,6 +20,12 @@ import zlib from urllib2 import parse_http_list as _parse_list_header +def guess_filename(obj): + """Tries to guess the filename of the given object.""" + name = getattr(obj, 'name', None) + if name and name[0] != '<' and name[-1] != '>': + return name + # From mitsuhiko/werkzeug (used with permission). def parse_list_header(value): """Parse lists as described by RFC 2068 Section 2.