1

我整天搜索如何<input type="file" multiple/>在Java中使用HtmlUnit在HTML标签中上传更多文件,但我还没有找到。
任何人都可以帮忙吗?我不能修改网页,因为它们不是我的。

我目前正在使用:

HtmlFileInput#setValueAttribute(path);
HtmlFileInput#setContentType(contenType);

太感谢了!

4

1 回答 1

3

好的。HtmlUnit 2.1.13 中似乎不存在此功能,因此打开了功能请求票:https ://sourceforge.net/p/htmlunit/feature-requests/215/

无论如何,我找到了一种可以实现类似行为的方法。这里是:

public static HtmlFileInput insertFileInputWithValue(String name, String value, 
    String contentType, HtmlPage page, DomElement parent) {
  // Necessary, otherwise HtmlUnit doesn't generate HtmlFileInput, but HtmlTextInput by default
  AttributesImpl ai = new AttributesImpl();
  ai.addAttribute(null, null, "type", null, "file");
  ai.addAttribute(null, null, "name", null, name);

  HtmlFileInput input = (HtmlFileInput) HTMLParser.getFactory("input")
    .createElementNS(page, null, "input", ai, true);
  input.setValueAttribute(value);
  input.setContentType(contentType);
  parent.appendChild(input);

  return input;
}

这些代码在您指定的任何父级中注入一个新的 html 输入文件,很可能是一个表单。
即使 HtmlUnit 不允许 using <input type="file" multiple/>,也可以通过在表单中​​注入更多具有相同名称的 HtmlFileInput 元素来实现相同的行为,您可以在其中将要上传的文件设置为值。

我希望这有帮助。

于 2013-10-29T09:19:03.057 回答