How to send a “multipart/form-data” with requests in python?

前端 未结 9 1793
野趣味
野趣味 2020-11-22 01:29

How to send a multipart/form-data with requests in python? How to send a file, I understand, but how to send the form data by this method can not understand.

9条回答
  •  粉色の甜心
    2020-11-22 01:59

    Since the previous answers were written, requests have changed. Have a look at the bug thread at Github for more detail and this comment for an example.

    In short, the files parameter takes a dict with the key being the name of the form field and the value being either a string or a 2, 3 or 4-length tuple, as described in the section POST a Multipart-Encoded File in the requests quickstart:

    >>> url = 'http://httpbin.org/post'
    >>> files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
    

    In the above, the tuple is composed as follows:

    (filename, data, content_type, headers)
    

    If the value is just a string, the filename will be the same as the key, as in the following:

    >>> files = {'obvius_session_id': '72c2b6f406cdabd578c5fd7598557c52'}
    
    Content-Disposition: form-data; name="obvius_session_id"; filename="obvius_session_id"
    Content-Type: application/octet-stream
    
    72c2b6f406cdabd578c5fd7598557c52
    

    If the value is a tuple and the first entry is None the filename property will not be included:

    >>> files = {'obvius_session_id': (None, '72c2b6f406cdabd578c5fd7598557c52')}
    
    Content-Disposition: form-data; name="obvius_session_id"
    Content-Type: application/octet-stream
    
    72c2b6f406cdabd578c5fd7598557c52
    

提交回复
热议问题