【发布时间】:2016-06-17 05:36:31
【问题描述】:
我一直在寻找上传带有附加数据的大文件的方法,但似乎没有任何解决方案。要上传文件,我一直在使用此代码,并且在处理小文件时效果很好:
with open("my_file.csv", "rb") as f:
files = {"documents": ("my_file.csv", f, "application/octet-stream")}
data = {"composite": "NONE"}
headers = {"Prefer": "respond-async"}
resp = session.post("my/url", headers=headers, data=data, files=files)
问题是代码在发送之前加载了整个文件,上传大文件时我会遇到 MemoryError。看了一圈,数据流的方式是设置
resp = session.post("my/url", headers=headers, data=f)
但我需要将 {"composite": "NONE"} 添加到数据中。否则,服务器将无法识别该文件。
【问题讨论】:
-
查看models.py中的代码,PreparedRequest类,prepare_body方法,没有办法使用请求流式上传带有附加数据的大文件。
-
你解决了吗?
标签: python file-upload python-requests large-file-upload