Home > Backend Development > Python Tutorial > Example of python implementing requests to send/upload multiple files

Example of python implementing requests to send/upload multiple files

不言
Release: 2018-06-04 11:41:49
Original
3355 people have browsed it

This article mainly introduces examples of how to implement requests in Python to send/upload multiple files. It has a certain reference value. Now I share it with you. Friends in need can refer to it

1. Required environment

Python2.X
Requests library

2. Single field sending a single file

There is only one interface for sending files in requests, which is to use the files parameter of requests.post. The request form is as follows:

url = "http://httpbin.org/post" 
data = None 
files = { ... } 
r = requests.post(url, data, files=files)
Copy after login

This files parameter can accept many forms of data. The two most basic forms are:

Dictionary type

Tuple list type

2.1 , Dictionary type files parameter

The officially recommended dictionary parameter format is as follows:

{ 
 "field1" : ("filename1", open("filePath1", "rb")), 
 "field2" : ("filename2", open("filePath2", "rb"), "image/jpeg"), 
 "field3" : ("filename3", open("filePath3", "rb"), "image/jpeg", {"refer" : "localhost"}) 
}
Copy after login

The key of this dictionary is to send a post The field name when requesting, and the value of the dictionary describes the information of the file to be sent; as can be seen from the above, the value can be a 2-tuple, 3-tuple or 4-tuple;

of this tuple The meaning of each field is:

("filename", "fileobject", "content-type", "headers")
Copy after login

By default, the default value

In addition to the above usage form, in fact, requests It still supports a more concise parameter form, as follows

{ 
 "field1" : open("filePath1", "rb")), 
 "field2" : open("filePath2", "rb")), 
 "field3" : open("filePath3", "rb")) 
}
Copy after login

The equivalent effect of this form of parameter is as follows, where filename is the file name of filepath:

{ 
 "field1" : ("filename1", open("filePath1", "rb")), 
 "field2" : ("filename2", open("filePath2", "rb")), 
 "field3" : ("filename3", open("filePath3", "rb")) 
}
Copy after login

Of course, you can also send a file request like this

{ 
 "field1" : open("filePath1", "rb").read()) 
}
Copy after login

The value of filename here For field1

2.2, files parameter of tuple list type

In fact, the form of tuple list is basically the same as that of dictionary, except for the outermost packaging. ; And inside requests, the dictionary parameter form will eventually be converted into a tuple column form. The usage recommended by the official website is as follows:

[ 
 ("field1" : ("filename1", open("filePath1", "rb"))), 
 ["field2" : ("filename2", open("filePath2", "rb"), "image/jpeg")], 
 ("field3" : ("filename3", open("filePath3", "rb"), "image/jpeg", {"refer" : "localhost"})) 
]
Copy after login

The sub-items in the list can be tuples or lists; the form of introduction is also supported here, as follows:

[ 
 ("field1" : open("filePath1", "rb"))), ##filename 使用的是filepath的文件名 
 ("field2" : open("filePath2", "rb").read())) ##filename 使用的是键值,即 field2 
]
Copy after login

3. Send multiple files in a single field [that is, when uploading files, set it to multiple selection]

3.1. Dictionary parameter format

{ 
 "field1" : [ 
     ("filename1", open("filePath1", "rb")), 
     ("filename2", open("filePath2", "rb"), "image/png"), 
     open("filePath3", "rb"), 
     open("filePath4", "rb").read() 
    ] 
}
Copy after login

3.2. Tuple list format

[ 
 ("field1" , ("filename1", open("filePath1", "rb"))), 
 ("field1" , ("filename2", open("filePath2", "rb"), "image/png")), 
 ("field1" , open("filePath3", "rb")), 
 ("field1" , open("filePath4", "rb").read()) 
]
Copy after login

For requests sent in the above two forms, all files will be under the same field. The background service can obtain all file objects from the field1 field

4. Send common data fields at the same time

#The above describes the use of sending file content requests, and sometimes we also send files while sending It is necessary to send ordinary data fields. At this time, the ordinary data fields can be directly stored in the data parameter, as follows:

data = {"k1" : "v1"} 
files = { 
 "field1" : open("1.png", "rb") 
} 
r = requests.post("http://httpbin.org/post", data, files=files)
Copy after login

Related recommendations:

Python implements a super simple video object extraction function

Python implements an example of pinging a specified IP

The above is the detailed content of Example of python implementing requests to send/upload multiple files. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template