通过python机械化上传文件

时间:2019-03-13 06:57:08

标签: python mechanize mechanize-python

我正在尝试使用机械化将图像文件上传到浏览器中。 尽管没有错误,但是当我在浏览器中手动检查(提交/保存后)时,上传的文件不会反映出来。 我正在使用以下代码上传文件

import mechanize as mc
br = mc.Browser()
br.set_handle_robots(False)
br.select_form(nr=0)
br.form.add_file(open("test.png"), content_type="image/png",
             filename='before',name="ctl00$ContentPlaceHolder1$fileuploadBeforeimages")

br.submit("ctl00$ContentPlaceHolder1$cmdSave") 
# this is supposed to save the form on the webpage. It saves the texts in the other fields, whereas the image does not show up.

添加文件命令似乎起作用。我可以确认这一点,因为在打印br.forms()[0]时会显示文件详细信息(<FileControl(ctl00$ContentPlaceHolder1$fileuploadBeforeimages=before)>)。

但是此代码段中没有图像文件的迹象。我已经检查了几个示例,其中包括br.submit(),没有任何特定的按钮控件,当我这样做时,网站上没有任何页面被保存。

我想念什么?

谢谢。

编辑

当我手动尝试上传文件时,我看到一个弹出窗口要求确认。在检查中,它显示为

onchange="if (confirm('Upload ' + this.value + '?')) this.form.submit();" 

我不确定这是否是JavaScript元素,并且机械化无法通过此部分进行上载功能。有人可以确认吗??

1 个答案:

答案 0 :(得分:0)

您可以像这样在图像名称前添加“ rb”:

br.form.add_file(open("test.png",'rb'),'images/png',filename,name='file')