如何在 Python 中模拟 post 表单来上传文件

 我来答
魔夜寂此爱0v
2016-10-15 · 超过35用户采纳过TA的回答
知道答主
回答量:189
采纳率:5%
帮助的人:41.2万
展开全部
在机器上安装了Python的setuptools工具,可以通过下面的命令来安装 poster:

1

<a href="https://www.baidu.com/s?wd=easy_install&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4mW0sP17WuH63nHw-Pj790ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnWmYnHczP1bkPWfkPjcznHmd" target="_blank" class="baidu-highlight">easy_install</a> poster

装完之后,安装下面代码就可以实现post表单上传文件了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

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")})

# 创建请求对象(localhost服务器IP地址,5000<a href="https://www.baidu.com/s?wd=%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E5%8F%A3&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4mW0sP17WuH63nHw-Pj790ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnWmYnHczP1bkPWfkPjcznHmd" target="_blank" class="baidu-highlight">服务器端口</a>)
request = urllib2.Request("http://localhost:5000/upload_image", datagen, headers)
# 实际执行请求并取得返回
print urllib2.urlopen(request).read()
琳姞家菲
2016-10-15 · 超过33用户采纳过TA的回答
知道答主
回答量:279
采纳率:0%
帮助的人:68.8万
展开全部
在机器上安装了Python的setuptools工具,可以通过下面的命令来安装 poster:
1
easy_install poster
装完之后,安装下面代码就可以实现post表单上传文件了:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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")})

# 创建请求对象(localhost服务器IP地址,5000服务器端口)
request = urllib2.Request("http://localhost:5000/upload_image", datagen, headers)
# 实际执行请求并取得返回
print urllib2.urlopen(request).read()
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式