用Python上传文件的内容

时间:2015-08-06 16:23:24

标签: python upload http-post standard-library

我想使用Python 2.7,没有标准库中没有任何模块,将文件上传到Web服务器(将接受此类请求)。 我知道这可以通过将数据作为多部分表单数据的一部分上传来完成,但是,我想知道我是否可以POST Content-Type: application/pdf(例如)和Content-Length设置到文件的长度,并使帖子的内容只是(在这种情况下为PDF)文件的内容。 如果是这样,最简单的方法是什么?

1 个答案:

答案 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标题。