爲了記錄在案,這裏就是我結束瞭解決我的問題:
from requests.packages.urllib3.fields import RequestField
from requests.packages.urllib3.filepost import encode_multipart_formdata
def prepare_body_with_size(request, files):
new_fields = []
for name, filename, data, file_type in files:
rf = RequestField(name=name, data=data, filename=filename)
content_disposition = 'form-data; size=%d' % len(data)
rf.make_multipart(content_disposition=content_disposition, content_type=file_type)
new_fields.append(rf)
body, content_type = encode_multipart_formdata(new_fields)
request.headers['Content-Type'] = content_type
request.body = body
return request
...
from requests import Request, Session
with Session() as s:
req = Request('POST', POST_ENDPOINT)
prepped = req.prepare()
prepare_body_with_size(prepped, files)
response = s.send(prepped)
的代碼大多是隻是一個請求prepare_body
方法是如何工作的重寫。
當您手動設置標題時會發生什麼? –
我不認爲我可以請求,因爲它不是請求頭,它是文件頭。 – Carl
當我看看'request.body'時,就像'''--d1cfff1341d94dd293f9aafd98ebc6e5 \ r \ n內容處置:表單數據; NAME = 「my_file」; filename =「filename.json」\ r \ nContent-Type:application/json \ r \ n \ r \ n ... file ... \ r \ n - d1cfff1341d94dd293f9aafd98ebc6e5 - \ r \ n''''。我可以添加更多的頭文件,比如'Content-Type:application/json',但我沒有看到任何改變'Content-Disposition'的方法。 – Carl