summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Cacqueray <tristan.cacqueray@enovance.com>2014-02-14 12:52:26 +0100
committerTristan Cacqueray <tristan.cacqueray@enovance.com>2014-02-14 16:51:20 +0100
commit380e83087447b724458ba16e11f527babb39dd01 (patch)
tree2c1f342a475e1af71eca74c0e208cdf1915c0e3f
parent79f189a59352ee5b11a584924f5066b511b482b0 (diff)
downloadpython-swiftclient-2.0.2.tar.gz
Remove multipart/form-data file upload2.0.2
The requests 'files' parameter adds this 'Content-Type: multipart/form-data' HTTP header and the whole multipart body data get stored with the object. This also create a memory hog issue because files are loaded in memory before being actually sent. This patch removes this behavior and restores what was done before, ie: direct uploading. This patches also fixes an issue in requests, when used with glance CooperativeReader it mis-calculates content-length leading to chunked encoding for raw upload. Change-Id: Ie5b0a1078bedd33f09c6157f48b5f88116c589fa Closes-Bug: #1280072 Closes-Bug: #1280275
-rw-r--r--swiftclient/client.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/swiftclient/client.py b/swiftclient/client.py
index 73baa3b..d4f83f1 100644
--- a/swiftclient/client.py
+++ b/swiftclient/client.py
@@ -935,7 +935,12 @@ def put_object(url, token=None, container=None, name=None, contents=None,
yield data
conn.putrequest(path, headers=headers, data=chunk_reader())
else:
- conn.putrequest(path, headers=headers, files={"file": contents})
+ # Fixes https://github.com/kennethreitz/requests/issues/1648
+ try:
+ contents.len = content_length
+ except AttributeError:
+ pass
+ conn.putrequest(path, headers=headers, data=contents)
else:
if chunk_size is not None:
warn_msg = '%s object has no \"read\" method, ignoring chunk_size'\