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

     2023-02-27     275

关键词:

【中文标题】python请求上传带有附加数据的大文件【英文标题】:python requests upload large file with additional data 【发布时间】: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方法,没有办法使用请求流式上传带有附加数据的大文件。 你解决了吗? 【参考方案1】:

您可以使用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 上传。

【讨论】:

非常感谢!我记得之前遇到过 requests-toolbelt,但没想到将 Content-Type 放到 header 中! 是的,工具带的文档非常明确地表明您需要它。 :)

在python中附加带有json数据的文本文件

】在python中附加带有json数据的文本文件【英文标题】:Appendtextfileinpythonwithjsondata【发布时间】:2016-08-1601:23:45【问题描述】:我正在尝试创建一个简单的函数,可用于将json数据存储到文件中。我目前有这个代码defdata_store(key_id,... 查看详情

在Android中上传带有进度条且没有OutOfMemory错误的大文件

】在Android中上传带有进度条且没有OutOfMemory错误的大文件【英文标题】:UploadlargefilewithprogressbarandwithoutOutOfMemoryErrorinAndroid【发布时间】:2014-05-1711:19:16【问题描述】:上传大型视频文件(最大150MB)时遇到问题1.当我使用此代码... 查看详情

Alamofire 上传带有进度的大文件并在应用重启时显示进度

】Alamofire上传带有进度的大文件并在应用重启时显示进度【英文标题】:Alamofireuploadinglargefileswithprogressandshowprogressonapprestart【发布时间】:2018-08-2012:56:17【问题描述】:我已通过以下步骤设置项目。我已启用外部附件通信和后... 查看详情

使用带有 Gmail API 的可恢复上传附加文件

】使用带有GmailAPI的可恢复上传附加文件【英文标题】:AttachingafileusingResumableuploadw/GmailAPI【发布时间】:2017-06-1108:59:23【问题描述】:我正在尝试使用Gmail的可恢复选项将附件上传到电子邮件。文档参考:https://developers.google.com/... 查看详情

如何将带有附加数据的 FormData 文件发送到 asp.net web api ajax 调用

...:34:02【问题描述】:在这个项目中,我有一种输入和文件上传的形式,ajax调用使用FormData对象将其发送到api的特定Url。当我在没有文件上传的情况下发送数据时,它 查看详情

如何通过 Autodesk Forge 上的数据管理 API 上传超过 100MB 的大文件?

...题描述】:最终结果:我为这个错误道歉。我在我的http请求中为Content-Range设置了错误的值。例子在这里:原始文件大小:5242880块大小: 查看详情

带有中间模型的 ActiveStorage 多次上传

】带有中间模型的ActiveStorage多次上传【英文标题】:ActiveStoragemultipleuploadwithintermediatemodel【发布时间】:2021-10-1717:41:45【问题描述】:目标我想上传多个文件。因此,一个干预可以有多个上传,每个上传都有一个附加文件。这... 查看详情

使用 Pandas、Python 将数据附加到 HDF5 文件

】使用Pandas、Python将数据附加到HDF5文件【英文标题】:AppenddatatoHDF5filewithPandas,Python【发布时间】:2018-02-2216:07:25【问题描述】:我有带有财务数据的大型熊猫数据框。将其他列和DataFrame添加和连接到我的.h5文件中没有问题。财... 查看详情

带有随机数的大数组与python

】带有随机数的大数组与python【英文标题】:Bigarraywithrandomnumberswithpython【发布时间】:2012-08-2311:15:09【问题描述】:我需要生成一个带有随机数(10⁵数字)的大数组(或列表)。我是这样尝试的:vet=random.sample(range(10),100000)但... 查看详情

Api 平台处理文件上传

...发送带有multipart/form-data和要附加图像文件的实体ID的POST请求时,我的实体收到200响应。但是上传的文件不会上传到目标目录,并且它生成的文件名不会保留。没有错误,没 查看详情

如何使用带有 HTTPS 请求的 Alamofire.upload 上传多部分数据?

】如何使用带有HTTPS请求的Alamofire.upload上传多部分数据?【英文标题】:HowtoUploadMultipartDataUsingAlamofire.uploadwithHTTPSRequest?【发布时间】:2018-11-2003:40:55【问题描述】:我已经使它适用于HTTP请求,但是仍然找不到使用alamofire/upload/m... 查看详情

在 Capybara 中测试 JQuery 上传:文件未附加

】在Capybara中测试JQuery上传:文件未附加【英文标题】:TestingJQueryUploadinCapybara:Filesarenotattaching【发布时间】:2017-07-1515:03:36【问题描述】:我目前正在构建一个使用jquery-upload插件的Rails应用程序,以允许用户上传文件以执行诸... 查看详情

在 Angular5 和 Spring Boot 中上传带有 JSON 数据的文件

...-04-0911:42:57【问题描述】:我被困在我的REST控制器上获取请求。下面是我的控制器方法:@RestController@CrossOrigin(origins="http://localhost:4200",allowedHead 查看详情

使用 Dojo 文件上传客户端向 Java 服务器端发送附加数据

】使用Dojo文件上传客户端向Java服务器端发送附加数据【英文标题】:SendadditionaldatatoJavaserver-sideusingDojofileuploadclient-side【发布时间】:2014-11-0418:21:48【问题描述】:在使用dojo上传文件时,我需要向服务器端发送额外的数据。我... 查看详情

由于跨域请求,带有 Jquery 文件上传的 Carrierwave_Direct 不会重定向

】由于跨域请求,带有Jquery文件上传的Carrierwave_Direct不会重定向【英文标题】:Carrierwave_DirectwithJqueryFileUploadwon\'tredirectduetocross-originrequests【发布时间】:2014-01-3118:18:33【问题描述】:我正在集成Carrierwave_Direct和Jquery文件上传。... 查看详情

在 React 中上传带有表单数据的图像

...文件时,图像属性在到达服务器时为undefined。我怀疑我在请求中使用了错误 查看详情

python请求上传文件

】python请求上传文件【英文标题】:pythonrequestsuploadfile【发布时间】:2017-10-1119:59:52【问题描述】:我正在访问一个网站,我想上传一个文件。我用python写了代码:importrequestsurl=\'http://example.com\'files=\'file\':open(\'1.jpg\',\'rb\')r=reque... 查看详情

带有异步请求的递归函数

】带有异步请求的递归函数【英文标题】:recursivefunctionwithasyncrequest【发布时间】:2015-09-1510:13:13【问题描述】:我有一个。如果请求成功,我想保存在一个数组中,但我不知道如何。具体是一个上传文件的函数,如果函数得到... 查看详情