Ris*_*shi 6 python python-requests
我想将文件上传到网址.我要上传的文件不在我的电脑上,但我有文件的网址.我想使用请求库上传它.所以,我想做这样的事情:
url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)
Run Code Online (Sandbox Code Playgroud)
但是,唯一不同的是,文件report.xls来自一些不在我的计算机中的URL.
aba*_*ert 11
唯一的方法是下载URL的正文,以便上传它.
问题是,一个需要a的表单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})
Run Code Online (Sandbox Code Playgroud)
当然,在某些情况下,您可能总是希望沿着文件名或其他标题转发,例如Content-Type.或者,对于大型文件,您可能希望从一台服务器流式传输到另一台服务器而无需下载,然后立即上传整个文件.你必须手动完成任何这样的事情,但几乎所有事情都很简单requests,并在文档中做了很好的解释.*
*嗯,这最后一个例子是不太容易的 ......你必须得到原始套接字,包装过的请求,read并write,并确保你不死锁,等等...