[英]Python file upload from url using requests library
我想将文件上传到网址。 我要上传的文件不在我的电脑上,但我有文件的网址。 我想使用请求库上传它。 所以,我想做这样的事情:
url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)
但是,唯一不同的是,文件report.xls来自一些不在我的计算机中的URL。
唯一的方法是下载URL的正文,以便上传它。
问题是获取file
的表单期望HTTP POST中的文件正文。 有人可以编写一个带有URL的表单,并自己进行提取......但这与采用文件的表单和请求不同(或者,可能是相同的表单,带有可选文件和可选的URL)。
当然,您不必下载它并将其保存到文件中。 你可以将它下载到内存中:
urlsrc = 'http://example.com/source'
rsrc = requests.get(urlsrc)
urldst = 'http://example.com/dest'
rdst = requests.post(urldst, files={'file': rsrc.content})
当然,在某些情况下,您可能始终希望沿着文件名或其他标题(如Content-Type
转发。 或者,对于大型文件,您可能希望从一台服务器流式传输到另一台服务器而无需下载,然后立即上传整个文件。 你必须手动完成任何这样的事情,但几乎一切都很容易requests
,并在文档中解释得很好。*
*嗯,最后一个例子并不容易 ......你必须从请求中read
和write
原始套接字包装器,并确保你没有死锁,等等......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.