gpt4 book ai didi

python请求上传带有附加数据的大文件

转载 作者:太空狗 更新时间:2023-10-29 18:31:20 26 4
gpt4 key购买 nike

我一直在寻找上传带有附加数据的大文件的方法,但似乎没有任何解决方案。要上传文件,我一直在使用这段代码,它在小文件上运行良好:

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"} 添加到数据中。否则,服务器将无法识别该文件。

最佳答案

您可以使用 requests-toolbelt这样做:

import requests
from requests_toolbelt.multipart import encoder

session = requests.Session()
with open('my_file.csv', 'rb') as f:
form = encoder.MultipartEncoder({
"documents": ("my_file.csv", f, "application/octet-stream"),
"composite": "NONE",
})
headers = {"Prefer": "respond-async", "Content-Type": form.content_type}
resp = session.post(url, headers=headers, data=form)
session.close()

这将导致请求为您流式传输 multipart/form-data 上传。

关于python请求上传带有附加数据的大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35779879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com