簡體   English   中英

python請求發送錯誤的多部分有效載荷

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM