使用请求上传文件并发送额外数据

Posted

技术标签:

【中文标题】使用请求上传文件并发送额外数据【英文标题】:Uploading files using requests and send extra data 【发布时间】:2012-10-12 11:35:54 【问题描述】:

我正在尝试使用requests 上传文件。我需要上传一个 PDF 文件,同时将一些其他数据发送到表单中,比如作者的姓名。

我试过了:

requests.get(url, files = "file":open("file.txt"), "author" : "me" )

但它不会向表单发送数据。

【问题讨论】:

the documentation 中给出了一个示例。你有问题吗? @BurhanKhalid 请再看问题 【参考方案1】:

所以我知道您想上传到一个 URL、一个 pdf 文件以及一些额外的参数。

您遇到的第一个错误是您使用的是.get() 而不是.post()

我正在使用来自documentation 的示例,您应该通过这些示例。这应该可以帮助您开始:

>>> url = 'http://httpbin.org/post'
>>> files = 'file': open('somefile.pdf', 'rb')
>>> values = 'author': 'John Smith'
>>> r = requests.post(url, files=files, data=values)

【讨论】:

我被要求这样做Make a multipart post request to http://server-url/oauth/. with the following form fields. AUTHOR, PDF FILE 我应该在data参数dict.中添加文件吗?/? 不,添加到files参数,data参数用于表单数据。 @BurhanKhalid - 您能否建议如何在端点中检索此数据。我正在使用烧瓶并使用request.data 获取文件内容。我怎样才能得到额外的数据(值)? 在flask端点中使用request.form来检索数据。

以上是关于使用请求上传文件并发送额外数据的主要内容,如果未能解决你的问题,请参考以下文章

在每个文件上传时使用 dropzone.js 发送自定义数据

如何在 HTTP 请求中发送文件并通过 Mule 中的 FTP 将其上传到文件服务器

使用多部分请求将大文件上传到服务器并使用休息套件读取进度

Java使用HttpURLConnection上传文件

Java使用HttpURLConnection上传文件

如何向 ajax 文件上传添加额外的 POST 参数?