将文件和数据传递到请求,每一次出错

时间:2019-01-18 13:48:21

标签: python python-requests

Python 3.6.7,请求2.21.0

我遇到一个问题,每个解决方案都会给我一个新的错误。

我想要的是:使用请求库在POST命令中发送包含数据的文件。

url_upload = BASE_URL + "upload?action=save"
data = {'data':{'name':'test.txt','contenttype':'text/plain', 'size':37}}
files = {'file': open('/home/user/test.txt', 'rb')}
req = session.post(url=url_upload, files=files, data=data)

最终服务器正在使用Spring(我假设),并且响应文本包含以下错误:

"net.sf.json.JSONException: A JSONObject text must begin with \'{\' at character 1 of name"

所以,我尝试

data = json.dumps(data)

但是,当然请求不希望这样:

ValueError: Data must not be a string.

如果我添加标题:

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

org.apache.commons.fileupload.FileUploadException: the request was rejected because no multipart boundary was found

我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

我需要做的是:

req = session.post(url = url_upload,files = files,data = {'data':json.dumps(data)})

这样,我给函数变量'data'赋予了表单数据变量名'data',其中包含具有键'data'的变量...

http://www.trekmate.org.uk/wp-content/uploads/2015/02/Data-star-trek-the-next-generation-31159191-1024-768.png