Python 请求 Post - 无法识别文件上传的附加字段
Python Requests Post - Additional field is not recognized for file upload
我必须 post 使用分段上传的文件到公司内部的 REST 服务。端点需要文件作为 属性“文件”,并且它需要一个额外的 属性“DestinationPath”。这是我的工作:
url = r"http://<Internal IP>/upload"
files = {
"DestinationPath": "/some/where/foo.txt",
"file": open("test.txt", "rb")
}
response = requests.post(url, files=files)
服务器抱怨无法获取“DestinationPath”。我收到的完整错误消息是:
{'errors': {'DestinationPath': ['The DestinationPath field is required.']},
'status': 400,
'title': 'One or more validation errors occurred.',
'traceId': '00-1993fbc53ab2ee418b683915dd7a440a-2338bd9cf34d414a-00',
'type': 'https://tools.ietf.org/html/rfc7231#section-6.5.1'}
文件上传在 curl 中进行,因此必须 python 特定。
您可能想尝试使用 data
参数而不是 files
。
response = requests.post(url, data=files)
感谢@etemple1,我找到了问题的解决方案:
url = r"http://<Internal IP>/upload"
data = {
"DestinationPath": "/some/where/foo.txt",
}
with open("test.txt", "rb") as content:
files = {
"file": content.read(),
}
response = requests.post(url, data=data, files=files)
分段上传的数据需要分为“数据”和“文件”。它们随后由请求库合并到 http post 的正文中。
我必须 post 使用分段上传的文件到公司内部的 REST 服务。端点需要文件作为 属性“文件”,并且它需要一个额外的 属性“DestinationPath”。这是我的工作:
url = r"http://<Internal IP>/upload"
files = {
"DestinationPath": "/some/where/foo.txt",
"file": open("test.txt", "rb")
}
response = requests.post(url, files=files)
服务器抱怨无法获取“DestinationPath”。我收到的完整错误消息是:
{'errors': {'DestinationPath': ['The DestinationPath field is required.']},
'status': 400,
'title': 'One or more validation errors occurred.',
'traceId': '00-1993fbc53ab2ee418b683915dd7a440a-2338bd9cf34d414a-00',
'type': 'https://tools.ietf.org/html/rfc7231#section-6.5.1'}
文件上传在 curl 中进行,因此必须 python 特定。
您可能想尝试使用 data
参数而不是 files
。
response = requests.post(url, data=files)
感谢@etemple1,我找到了问题的解决方案:
url = r"http://<Internal IP>/upload"
data = {
"DestinationPath": "/some/where/foo.txt",
}
with open("test.txt", "rb") as content:
files = {
"file": content.read(),
}
response = requests.post(url, data=data, files=files)
分段上传的数据需要分为“数据”和“文件”。它们随后由请求库合并到 http post 的正文中。