2011-10-02 89 views
6

据我可以从WWW::Mechanize documentation阅读,你可以做以下从字符串提交文件:WWW上不正确的文件名::机械化提交

$mech->submit_form(
    fields => { 
     'UploadedFile' => [[ undef, 'test2.txt', Content => $content ], 1], 
    } 
); 

这应该提交一份文件,名称text2.txt,包含文本$content(在这种情况下,'The file is a lie.')。

请求与内部服务器错误但是失败了,所以我检查所发送的请求,并发现这一点:

--xYzZY 
Content-Disposition: form-data; name="UploadedFile"; filename="ARRAY(0x9567570)" 

The file is a lie. 
--xYzZY 

这显然不是我指定的文件名,所以我不知道:我是做错了什么,或者模块被窃听?

+0

我做了一个测试,并得到了'注释掉线1442暂时解决的事情filename =“ARRAY(0x1f124d8)”'也是倾销'$ mech-> res'('WWW :: Mechanize' 1.66)。 –

+0

“with_fields”而不是“字段”的关键字会产生不同的结果吗?如果有多个表单并且没有选择表单,“with_fields”将有所帮助。 –

+0

'with_fields'给出了和'fields'相同的结果。 –

回答

2

这是HTML :: Form中的一个错误。我已经向作者报告过。

在此同时,如果你有HTML ::表版本6.00,您可以通过HTML/Form.pm读取

$old = $self->file unless defined $old;