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

标签 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();

最佳答案

如需调试,请添加 autocheck => 1$mech对象,它将打印错误并在最早的不成功调用时返回。

另外,添加一个 print $mech->content调用 $mech->submit 后,

您可能会收到一些错误页面,在这种情况下,您可以尝试设置用户代理:
$mech->agent_alias( 'Windows IE 6' )
或者,您可能需要从较早的页面获取 cookie 才能上传。 (您可以通过清除浏览器中的 cookie 并尝试直接从上传页面上传来测试这一点)

关于Perl Mechanize,提交带有文件(图像)的表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3221312/

相关文章:

PHP : How to post form data via another file?

regex - perl - 提取字符串列表

Python请求填写下拉菜单的表单

asp.net - 网页抓取一个棘手的 asp.net 页面

python - 从路由器解析数据时出现授权错误

javascript - 防止表单 "on submit"加载空白页

php - 提交表单时,出现错误

perl - 无法在 Perl Catalyst 应用程序中使用 Test::WWW::Mechanize::Catalyst 在测试用例中打印变量/哈希

perl - 如果未指定内容类型,如何强制 Catalyst::Controller::REST 在 POST 请求之后呈现 View ?

mysql - 如何使sqlite in-memory db join查询和MySQL一样快