python post发送文件_如何在python 3中发送post文件(图像)

首先请原谅我英语不好(我说西班牙语)。

我正在尝试提交一个上传图像的表单。

当我想发送普通数据(如何发送文本字符串)时,我会执行以下操作:

第一个导入模块:import urllib.request

import urllib.parse

import http.cookiejar

准备Cookie和头文件:cj = http.cookiejar.CookieJar()

open = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))

abriendo.addheaders = [("User-agent","Mozilla/5.0")]

urllib.request.install_opener(open)

编码url数据,我使用id(它在web表单html中)valor1 = {"username":"test1","password","hello"}

valor2 = urllib.parse.urlencode(valor1)

finalvalor = valor2.encode("UTF-8")

现在可以发送post数据(记住,这是一个字符串数据示例)nav = urllib.request.urlopen(url,finalvalor)

navread = str(nav.read())

Url变量具有post Url

这工作很好,但我有问题发送图像。

web窗体以以下代码开头:

action="example.php" method="post">

我知道dicc = {"uploadFile1":open("1.jpg","rb")}

nav = urllib.request.urlopen(url,dicc)

navread = str(nav.read())

出现此错误:ValueError: Content-Length should be specified for iterable data of type {'uploadFile1': <_io.bufferedreader name="1.jpg">

我尝试对数据进行编码(enconde dicc how normal url),但没有工作(不发送任何数据)。我在谷歌上冲浪,我认为二进制数据需要编码到base64??

最后,问题是,如何使用urllib.request模块上传图像?

谢谢你的阅读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值