django 通过python的requests()一起发送json和file(二进制)

tct7dpnv  于 2023-08-08  发布在  Go
关注(0)|答案(2)|浏览(167)

我有一个curl命令,它可以将文件和数据发送到我的API。
它工作正常。

curl --location 'localhost:8088/api/' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--form 'file=@"image.png"' \
--form 'metadata="{
    \"meta\": {
        \"number\": 400
    }}"'

字符串
现在我想在python内部做同样的事情。
所以我使用requests,但它显示为TypeError: request() got an unexpected keyword argument 'file'
json和图片数据一起发怎么办?

headers = {
    'Content-Type': 'multipart/form-data',
    'Accept': 'application/json'
}
metadata = {"number":400}
response = requests.post('https://localhost:8088/api/',
     headers=headers, data={
        metadata:metadata},
        file = {
            open("image.png",'rb')
        }
)

aydmsdu9

aydmsdu91#

requests库中,file的正确参数是files
用这样的东西

import requests

files = {'media': open('test.jpg', 'rb')}

requests.post(url, files=files)

字符串

mcvgt66p

mcvgt66p2#

将二进制数据编码为base64,并将它们作为JSON的字段添加。

import base64
image_b64 = base64.b64encode(open('image.png', 'rb').read())

data = {
   "metadata": {"number": 400},
   "file": image_b64,
}
response = requests.post(
   'https://localhost:8088/api/', 
   headers=headers,
   data=data,
)

字符串

相关问题