我想使用Python 2.7,没有标准库中没有任何模块,将文件上传到Web服务器(将接受此类请求)。
我知道这可以通过将数据作为多部分表单数据的一部分上传来完成,但是,我想知道我是否可以POST
Content-Type: application/pdf
(例如)和Content-Length
设置到文件的长度,并使帖子的内容只是(在这种情况下为PDF)文件的内容。
如果是这样,最简单的方法是什么?
答案 0 :(得分:2)
如果服务器接受直接有效负载帖子(而不是文件是multipart/form-data
POST请求的一部分),您只需将Request()
数据参数设置为文件数据:
import urllib2
with open(filename, 'rb') as uploadfile:
request = urllib2.Request(url, data=uploadfile.read(),
{'Content-Type': 'application/pdf'})
response = urllib2.urlopen(request)
urllib2.Request
对象不对data
的内容做任何假设,除非Content-Type
标头设置为application/x-www-form-urlencoded
,如果data
已设置,除非你提供自己的。
执行此操作时,将为您设置Content-Length
标题。