Python请求,无法将图像上传到multipart/formd

2024-10-04 01:27:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python请求将jpeg图像文件上载到多部分表单。在

如果我检查通过通常使用浏览器上传图像的请求,我会看到:

------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="uploadphotos"

true
------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="deletephoto"

0
------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_input_0"; filename="1 KIN 
GRD.jpg"
Content-Type: image/jpeg


------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_path0"

C:\fakepath\1 KIN GRD.jpg
------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="e$phMain$UploadButton0"

Upload photo
------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_input_1"; filename=""
Content-Type: application/octet-stream


------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_path1"


------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_input_2"; filename=""
Content-Type: application/octet-stream


------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_path2"


------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_input_3"; filename=""
Content-Type: application/octet-stream


------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_path3"


------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_input_4"; filename=""
Content-Type: application/octet-stream


------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_path4"


------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_input_5"; filename=""
Content-Type: application/octet-stream


------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_path5"


------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_input_6"; filename=""
Content-Type: application/octet-stream


------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_path6"


------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_input_7"; filename=""
Content-Type: application/octet-stream


------WebKitFormBoundaryKGkGxMtaz943aFXQ
Content-Disposition: form-data; name="upload_path7"


------WebKitFormBoundaryKGkGxMtaz943aFXQ--

这是我用来上传表单中第一张图片的python代码(最多可以上传8张图片),但是首先我应该能够上传至少第一张图片:

^{pr2}$

但我无法上传图片。在

编辑:这不是同一个问题。我的问题与这一个具体案例有关:在这种具体情况下,什么是正确的要求?我是否必须发送包含所有字段的多部分请求(因为我将发布所有图像)?在

编辑2:我找到了解决办法:

multipart_form_data = {
        'uploadphotos': (None, 'true', None),
        'deletephoto': (None, '0', None),
        'upload_input_0': ("test2.jpg", open('test2.jpg', 'rb'),'image/jpeg'),
        'upload_path0': (None, 'C:\fakepath\test2.jpg', None),
        'e$phMain$UploadButton0': (None, 'Upload photo', None),
        'upload_input_1': ('', ''),
        'upload_path1': (None, '', None),
        'upload_input_2': ('', ''),
        'upload_path2': (None, '', None),
        'upload_input_3': ('', ''),
        'upload_path3': (None, '', None),
        'upload_input4': ('', ''),
        'upload_path4': (None, '', None),
        'upload_input_5': ('', ''),
        'upload_path5': (None, '', None),
        'upload_input_6': ('', ''),
        'upload_path6': (None, '', None),
        'upload_input_7': ('', ''),
        'upload_path7': (None, '', None),
    }
    r = s.post(upload_image_url, headers = headers_s, files=multipart_form_data)

这是一个完美的解决方案!在


Tags: nameformnoneinputdatastreamapplicationtype