小编ozn*_*znu的帖子

Python请求:在单个请求中发布JSON和文件

我需要进行API调用以上传文件以及带有文件详细信息的JSON字符串.

我试图使用python请求lib来做到这一点:

import requests

info = {
    'var1' : 'this',
    'var2'  : 'that',
}

data = json.dumps({
    'token' : auth_token,
    'info'  : info,
})

headers = {'Content-type': 'multipart/form-data'}

files = {'document': open('file_name.pdf', 'rb')}

r = requests.post(url, files=files, data=data, headers=headers)
Run Code Online (Sandbox Code Playgroud)

这会引发以下错误:

    raise ValueError("Data must not be a string.")
 ValueError: Data must not be a string
Run Code Online (Sandbox Code Playgroud)

如果我从请求中删除"文件",它就可以了.
如果我从请求中删除"数据",它就可以工作.
如果我不将数据编码为JSON,则可以正常工作.

出于这个原因,我认为错误与在同一请求中发送JSON数据和文件有关.

关于如何使这个工作的任何想法?

python json urllib2

28
推荐指数
2
解决办法
4万
查看次数

标签 统计

json ×1

python ×1

urllib2 ×1