[英]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.