首先请原谅我英语不好(我说西班牙语)。
我正在尝试提交一个上传图像的表单。
当我想发送普通数据(如何发送文本字符串)时,我会执行以下操作:
第一个导入模块: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??