我似乎找不到一个如何正确执行此操作的好例子,我找到的那些不适合我..我正在尝试使用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();
答案 0 :(得分:1)
对于调试,将autocheck => 1
添加到$mech
对象,它将打印错误并在最早的失败呼叫时返回。
此外,请在致电print $mech->content
后添加$mech->submit
,
您可能会收到一些错误页面,在这种情况下,您可以尝试设置用户代理:
$mech->agent_alias( 'Windows IE 6' )
或许,您可能需要从较早的页面获取cookie才能上传。 (您可以通过在浏览器中清除Cookie并尝试直接从上传页面上传来测试)