Python使用poster
来源:互联网 发布:vm数据区 编辑:程序博客网 时间:2024/06/16 11:44
poster提供了一组 Python 类和函数用来处理使用标准 multipart/form-data 编码的 HTTP POST 请求,也就是 HTTP 文件上传请求。
1 安装poster
点https://pypi.python.org/pypi/setuptools。
点setuptools的install链接。
另存ez_setup.py。
执行python ez_setup.py,这样setuptools就装成功。
2安装poster
点:https://pypi.python.org/pypi/poster/,下载poster。
执行easy_install.exe poster-0.8.1-py2.7.egg
3上传图片。
如果机器上有 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 中的 标签的 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()
很简单,文件就上传完成了。
其中那个 register_openers() 相当于以下操作:
另外,poster 也可以携带 cookie,比如:
opener = poster.streaminghttp.register_openers()
opener.add_handler(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
params = {'file': open("test.txt", "rb"), 'name': 'upload test'}
datagen, headers = poster.encode.multipart_encode(params)
request = urllib2.Request(upload_url, datagen, headers)
1 安装poster
点https://pypi.python.org/pypi/setuptools。
点setuptools的install链接。
另存ez_setup.py。
执行python ez_setup.py,这样setuptools就装成功。
2安装poster
点:https://pypi.python.org/pypi/poster/,下载poster。
执行easy_install.exe poster-0.8.1-py2.7.egg
3上传图片。
如果机器上有 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 中的 标签的 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()
很简单,文件就上传完成了。
其中那个 register_openers() 相当于以下操作:
另外,poster 也可以携带 cookie,比如:
opener = poster.streaminghttp.register_openers()
opener.add_handler(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
params = {'file': open("test.txt", "rb"), 'name': 'upload test'}
datagen, headers = poster.encode.multipart_encode(params)
request = urllib2.Request(upload_url, datagen, headers)
result = urllib2.urlopen(request)
0 0
- Python使用poster
- poster
- 使用Poster做接口测试
- 火狐插件 poster 使用详解
- 使用火狐poster进行接口测试
- 使用chrome浏览器插件Chrome Poster为GCM推送消息
- 如何使用火狐浏览器的Poster插件进行post请求
- Poster Design
- Poster Design II
- 典型代表 Poster child
- Flex Error Classes Poster
- 如何做Poster
- poster add on
- Experience for making poster
- 火狐 poster初运用
- 火狐的poster工具
- codeforces 412A Poster
- 火狐 poster学习小记
- spring+springMVC声明事物管理配置
- linux下yum源配置
- centos下搭建MySQL主从复制
- nyoj252 01串(动态规划)
- ACTION AIDL
- Python使用poster
- Python---BeautifulSoup 简单的爬虫实例
- ubuntu 安装 redis,并配置远程、密码
- 并发数 = QPS*平均响应时间
- 设计模式学习之适配器模式
- 项目名字缩成rtp了:关于ROS actionlib的multiple goals
- linux命令rm
- vue-cli搭建项目
- IOS 返回根视图