requestsを使ってmultipart/form-data形式でファイル送信
Requests では、files
パラメータを指定すれば、簡単に multipart/form-data
形式でファイルを送信できます。
以下は、単一ファイルを送信する例です。 キーはフォーム要素の名前、値はファイル名、ファイルオブジェクト、メディアタイプを含むタプルです。
import requests
url = 'http://127.0.0.1:5000/upload'
files = {'inputFiles': (
'a.pdf',
open('a.pdf', 'rb'),
'application/pdf'
)}
r = requests.post(url, files=files)
複数ファイルを送信する場合:
multiple_files = [
['inputFiles', [
'a.pdf',
open('a.pdf', 'rb'),
'application/pdf'
]],
['inputFiles', [
'b.png',
open('b.png', 'rb'),
'image/png'
]]
]
r = requests.post(url, files=multiple_files)
YAML ファイルにて入力ファイルを指定し、Python に読み込ませる場合、以下のようになります。
- name: multipart_request
url: http://127.0.0.1:5000/upload
request:
method: POST
files:
- - inputFiles
- - a.pdf
- /home/ubuntu/a.pdf
- application/pdf
- - inputFiles
- - b.png
- /home/ubuntu/b.png
- image/png
import yaml
import requests
def parse_files(files):
for f in files:
fp = f[1][1]
fileobj = open(fp, 'rb')
f[1][1] = fileobj
return files
with open('test.yaml') as f:
config = yaml.safe_load(f)
url = config[0]['url']
req_files = config[0]['request']['files']
multiple_files = parse_files(req_files)
r = requests.post(url, files=multiple_files)