Skip to content

Commit

Permalink
Remove multipart/form-data file upload
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Tristan Cacqueray committed Feb 14, 2014
1 parent 79f189a commit 380e830
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion swiftclient/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -935,7 +935,12 @@ def chunk_reader():
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'\
Expand Down

0 comments on commit 380e830

Please sign in to comment.