Perl Mechanize,提交带有文件(图像)的表单?

时间:2010-07-11 00:03:29

标签: perl mechanize form-submit

我似乎找不到一个如何正确执行此操作的好例子,我找到的那些不适合我..我正在尝试使用perl mechanize提交表单,其中表单有图像文件,表单如下,它实际上是一种方式我试图访问这个API的网站,我有一个帐户和使用POST似乎是最简单的方式来使用他们的API:

<HTML>
<BODY>

<form 
 method="post" 
 name="image_upload"
 action="http://example-website.com" 
 enctype="multipart/form-data">
 <input type="hidden" name="field1"  value="">
 <input type="text"   name="username"  value="">
 <input type="text"   name="password"  value="">
 <input type="file"   name="pict">
 <input type="text"   name="field2"   value="0">
 <input type="text"   name="field3" value="0">
 <input type="submit" value="Send">
</form>

</BODY>
</HTML>

我试过这个,但它没有上传图片文件,似乎..任何建议表示赞赏。 (为简单起见,我省略了部分脚本,但我可以使用此方法提交其他表单,而不是需要文件上传的表单)

填写表格字段:
$mech->form_name('image_upload');

$mech->set_fields( field1 => '', 
username => $username,
password => $password,
pict => '/home/user1/Desktop/pic.jpg',
field2 => '0',
field3 => '0'
);

#### submit form
$mech->submit();

1 个答案:

答案 0 :(得分:1)

对于调试,将autocheck => 1添加到$mech对象,它将打印错误并在最早的失败呼叫时返回。

此外,请在致电print $mech->content后添加$mech->submit

您可能会收到一些错误页面,在这种情况下,您可以尝试设置用户代理:

$mech->agent_alias( 'Windows IE 6' )

或许,您可能需要从较早的页面获取cookie才能上传。 (您可以通过在浏览器中清除Cookie并尝试直接从上传页面上传来测试)