我遇到了一个奇怪的问题,WWW :: Mechanize模块,php测试上传代码:
<?php
echo '<form action="" method="post" enctype="multipart/form-data" name="uploader" id="uploader">';
echo '<input type="file" name="file" size="70"><input name="_upl" type="submit" id="_upl" value="Upload"></form>';
if( $_POST['_upl'] == "Upload" )
{
if(@copy($_FILES['file']['tmp_name'], $_FILES['file']['name']))
{
echo '<b>Upload success.</b><br>';
} else {
echo '<b>Upload faild.</b><br>';
}
}
?>
perl代码:
#!/usr/bin/perl
use WWW::Mechanize;
$path = 'http://path/to/uploader-code.php';
$file = $ARGV[0];
my $mech = WWW::Mechanize->new(show_progress => 1);
$mech->get($path);
$mech->submit_form(
form_name => 'uploader',
fields =>
{
'_upl' => 'Upload',
'file' => $file
}
);
我在命令行上输出了这个输出:
** GET http://path/to/uploader-code.php ==> 200 OK (3s)
** POST http://path/to/uploader-code.php ==> 200 OK (3s)
从浏览器我可以上传没有任何问题,但机械化它faild。我正在使用Windows 8,activeperl最新版本。