[英]python-requests sending wrong multi-part payload
我正在嘗試使用requests
包發送多部分POST請求。
這是代碼:
with open("small-car.png", "rb") as image_file:
encoded_image = "data:image/png;base64,%s" % base64.b64encode(image_file.read())
files = {'img': encoded_image}
r = requests.post(url, files=files)
在服務器端,我依靠下面的flask代碼對其進行解碼:
data = request.form.to_dict()
但是, data
始終為{}
。 Wireshark的峰值顯示以下內容:
這似乎是錯誤的。 正確的標頭不應包含我認為的filename=xxx
部分。
有沒有辦法調整requests
以在此處執行正確的操作?
我認為您可以執行以下操作:
data = {'file': files}
response = requests.put(url=url, data=data)
另外,除了使用wireshark之外,您還可以在燒瓶代碼中添加跟蹤( import ipdb; ipdb.set_trace()
),然后檢查在Python中發布的內容。
我很確定您的標頭還可以。 在閃存中分別接收文件
檢查一下: http : //flask.pocoo.org/docs/0.10/patterns/fileuploads/
if request.method == 'POST':
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
如果要排除filename
部分,請執行以下操作:
data = {'img': ('', encoded_image)}
requests.post(url, files=data)
元組的第一個元素將作為文件名,並且由於為空,因此將其排除在外。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.