2011-09-06 70 views
0

根據Basecamp API文檔,文件應該使用內容類型設置爲application/octet-stream的HTTP POST以及包含文件二進制內容的請求主體上傳(請參閱http://developer.37signals.com/basecamp/)。我想傳輸文件,而不是將整個內容讀入內存。我正在使用Python 2.7。使用Python上傳Basecamp文件

我可以看到幾種可能性:

  • 爲此,使用低級別的套接字API。
  • 使用urllib2和Poster(http://atlee.ca/software/poster/)來處理文件流。但是,通過Poster,您可以註冊文件流的特殊開啓者,並且我已經明確使用自己的開啓者(將其傳遞給build_opener)來處理Basecamp服務器上的身份驗證。另外海報文檔只討論發佈表單數據,目前還不清楚(仍然閱讀源代碼)它是否可以處理八位字節流。
  • 使用httplib。這看起來像會給我更低級的POST數據處理(所以我可以使用八位字節流),但我仍然沒有看到一個簡單的方法來傳輸文件。

我發現Python: HTTP Post a large file with streaming但它聽起來像是除非我想使用表單數據格式,我必須修補httplib(!)。這篇文章已經一歲了,但我希望現在有更好的方法。

現在我正在研究創建像海報一樣的自己的混音,但是想知道:這真的很難嗎?難道沒有一種更簡單的方式來處理我認爲比較標準的用例嗎?

回答