Python中使用POST方式上传文件
2014-10-08 17:33
489 查看
最近要用 Python 模拟表单上传文件,搜索了一下常见的解决方案。 如果只是要模拟提交一个不包含文件字段的表单,实现起来是很简单的,但涉及到文件上传就有一点小复杂,需要自己对文件进行编码,或者使用第三方模块。 如果机器上有 PycURL,那么可以使用 PycURL 来上传文件。 不过,由于 PycURL 需要用到 curl,在 Windows 下安装可能会有点麻烦,除 PycURL 外,也有一些其它实现 POST 文件上传的方式,比如 这儿 的 2 楼有人贴出了一个将文件进行编码之后再 POST 的方法,另外还有MultipartPostHandler、urllib2_file、poster 等第三方模块。但 MultipartPostHandler 这个模块似乎比较老了,urllib2_file 我试用了一下遇到错误没有成功,这儿我想介绍的是另外一个第三方模块 poster。 如果机器上安装了 Python 的 setuptools,可以通过下面的命令来安装 poster:easy_install poster
# test_client.py
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
import urllib2
# 在 urllib2 上注册 http 流处理句柄
register_openers()
# 开始对文件 "DSC0001.jpg" 的 multiart/form-data 编码
# "image1" 是参数的名字,一般通过 HTML 中的 <input> 标签的 name 参数设置
# headers 包含必须的 Content-Type 和 Content-Length
# datagen 是一个生成器对象,返回编码过后的参数
datagen, headers = multipart_encode({"image1": open("DSC0001.jpg", "rb")})
# 创建请求对象
request = urllib2.Request("http://localhost:5000/upload_image", datagen, headers)
# 实际执行请求并取得返回
print urllib2.urlopen(request).read()
相关文章推荐
- Python中使用POST方式上传文件
- Python中利用urllib2使用POST方式上传文件
- Python中使用POST方式上传文件
- python使用post方式上传文件
- Python中使用POST方式上传文件
- HttpClient的使用——Post方式提交表单和上传文件
- WinForm使用webclient通过http的POST方式上传文件
- winform下通过webclient使用非流方式上传(post)数据和文件
- 使用WebClient Post方式模拟上传文件和数据
- Python -- post方式上传文件
- 使用Socket 完成HTTP post方式的文本及文件上传 demo
- 使用HttpURLConnection通过POST方式提交请求数据,并上传文件
- python 通过post方式上传文件到php服务器
- winform下通过webclient使用非流方式上传(post)数据和文件
- android开发 使用HttpClient访问网络,post、get方式。注册、登陆、上传文件。
- android 使用post方式上传文件
- winform下通过webclient使用非流方式上传(post)数据和文件
- 直接使用http post的方式上传文件到SharePoint
- 和我一起使用Python的bottle来实现文件的上传和下载(使用post方法)