2011-09-06 74 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(!)。这篇文章已经一岁了,但我希望现在有更好的方法。

现在我正在研究创建像海报一样的自己的混音,但是想知道:这真的很难吗?难道没有一种更简单的方式来处理我认为比较标准的用例吗?

回答