Flask使用请求将上载的文件传递给另一个服务



我有一个Python烧瓶Web服务,它接收一个文件:

标题:

内容类型:多部分/表单数据

内容:

"fileTest":上传的文件

当我使用requests-lib将文件传递给另一个服务时,我会遇到上传的文件没有传递的问题。

我的代码:

files = {}
for form_file_param in request.files:
fs = request.files[form_file_param]  # type: FileStorage
files[form_file_param] = (fs.filename, fs.read())
req_headers = {
"content-type": u "multipart/form-data; boundary=X-INSOMNIA-BOUNDARY",
}
r = requests.request(method='POST',
url=url,
headers=req_headers,
files=files)

我通过邮递员直接联系我的其他服务,它成功地工作了。我似乎不明白我在上面的代码中做错了什么。

您需要遵循请求文档。

http://docs.python-requests.org/en/master/user/quickstart/#post-a-multipart-encoded-file

url = 'https://httpbin.org/post'
files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
r = requests.post(url, files=files)
r.text

改变。在观看OP响应后,由标头Content-Type引起的问题。

这是一种特殊的内容类型,可以可视化为一个大请求中的多个子请求。每个子请求(一个表单数据元素(都有自己的一组头。实际数据的内容类型在那里1

注:fsfs.read()没有区别

#models.py line 149
if isinstance(fp, (str, bytes, bytearray)):
fdata = fp
else:
data = fp.read()

最新更新