【发布时间】:2015-08-06 16:23:23
【问题描述】:
我想使用没有任何不在标准库中的模块的 Python 2.7 将文件上传到 Web 服务器(它将接受此类请求)。
我知道这可以通过将数据作为多部分表单数据的一部分上传来完成,但是我想知道我是否可以将POST 与Content-Type: application/pdf(例如)和Content-Length 设置为文件的长度并且,帖子的内容只是(在本例中为 PDF)文件的内容。
如果是这样,最简单的方法是什么?
【问题讨论】:
-
我想知道我是否可以使用 Content-Type: application/pdf 进行 POST 这取决于 web 服务器 是否接受.如果服务器只接受
multipart/form-data用于文件上传,则不能强制服务器接受其他内容。 -
首先确定服务器是否接受没有多部分负载的直接帖子。您可以使用 Postman(Chrome 扩展程序)或 Python
requests库,甚至使用标准库中的urllib2。如果你真的必须的话,那就把自己限制在标准库中。 -
直接上传是完全可能的。只需将
urllib2.Request()data parameter 设置为您的文件内容(以二进制形式打开),然后设置Content-Type标头。完成。 -
@Martijn Pieters 将 data 参数传递给 urllib2.Request 根据文档仅接受
application/x-www-form-urlencoded中的数据(至少在 Python 2.7 中)。服务器将接受此类请求。 -
不,
Request对象实际上并不关心。文档只是告诉您数据不会为您编码,您需要提供易于编码的数据如果您使用的是表单发布。
标签: python upload http-post standard-library