Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python发送文件和元数据的未编码多部分/表单数据POST请求_Python_Post_Python Requests_Multipartform Data - Fatal编程技术网

使用python发送文件和元数据的未编码多部分/表单数据POST请求

使用python发送文件和元数据的未编码多部分/表单数据POST请求,python,post,python-requests,multipartform-data,Python,Post,Python Requests,Multipartform Data,我正在尝试使用python和请求通过POST将几个文件和一些元数据上传到服务器API。我想使用multipart/form数据类型,而不是对数据进行编码。 我根据教程和请求文档遵循了这些步骤,但遇到了几个问题: import requests data = { "key1": "value1", "key2": "value2" } files = { "image":

我正在尝试使用python和请求通过POST将几个文件和一些元数据上传到服务器API。我想使用multipart/form数据类型,而不是对数据进行编码。 我根据教程和请求文档遵循了这些步骤,但遇到了几个问题:

import requests

data = {
    "key1": "value1",
    "key2": "value2"
}

files = {
    "image": open('image.jpg', 'rb')
}

headers = {
    "accept": "*/*",
    "Authorization": "Bearer " + token
    "Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryzqgQ4h5D6Zi8"
}

r = requests.post(url, files=files, data=data, headers=headers, verify=False)
print(r.status_code, r.text)
这会给我一个400和错误:

“无法读取请求表单。超出了多部分正文长度限制16384。”

我了解到,将内容类型留给请求可能会有所帮助,它会找到答案。 如果没有内容类型声明,我仍然会得到一个400和一个返回文本:

文件是必需的

现在这可能是一个服务器端问题(我没有看到),因为它需要多部分/表单数据,但我想请求处理的是正确的标识

到目前为止我运气不好,有人知道如何解决这个问题吗


编辑:仍然不知道问题的确切原因,但找到了解决方法:

  • 将所有数据直接添加到URL字符串
  • 除去必要的授权令牌之外,删除了所有头
在我看来,请求能够做很多繁重的工作,而且太多的声明会妨碍(?)