【问题标题】:Incorrect filename on WWW::Mechanize submissionWWW::Mechanize 提交上的文件名不正确
【发布时间】:2011-11-29 10:41:06
【问题描述】:

据我所知WWW::Mechanize documentation,您可以执行以下操作从字符串提交文件:

$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

这显然不是我指定的文件名,所以我想知道:我做错了什么,还是模块出错了?

【问题讨论】:

  • 我做了一个测试,也得到了filename="ARRAY(0x1f124d8)",转储$mech->resWWW::Mechanize1.66)。
  • “with_fields”键而不是“fields”键会产生不同的结果吗?如果有多个表单并且没有选择任何表单,“with_fields”会有所帮助。
  • with_fields 的结果与fields 相同。
  • 这看起来非常类似于 LWP 基础字段提交 (c/f lwp.interglacial.com/ch05_07.htm)。提交fields => {'UploadedFile' => [ undef, 'test2.txt', Content => $content ], upload_field => 1 },其中up​​load_field 是表单提交字段的名称,是否正常工作?
  • @Oesor:我不确定你想让我写什么而不是upload_field

标签: perl www-mechanize


【解决方案1】:

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

同时,如果您有 HTML::Form 6.00 版,您可以通过注释掉 HTML/Form.pm 中的第 1442 行来临时修复问题

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多