我正在使用Apache-Commons FileUpload library
将文件上传到服务器。它工作正常,但突然在我提交文件时,FileItem.isFormField()
由于某种原因而返回true。这是我的代码
FileUpload.java servlet
if (ServletFileUpload.isMultipartContent(request))
{
List<FileItem> items = new ServletFileUpload(
new DiskFileItemFactory()).parseRequest(request);
for (FileItem item : items)
{
// if item is a file type and not a form field
if (!item.isFormField())
{
// UPLOAD FILE
}
}
}
ticketform.jsp
<form action="upload" enctype="multipart/form-data" method=post>
<button type="button" id="clip-btn" class="attach-tool-tip" >
<img src="images/attachment.png" id="attach-img" width="25px"/>
</button>
<input id="attach-btn" type="file" style="display:none"/>
<input id="submit-form" name="upload" type="submit" style="display:none"/>
</form>
ticketform.js
// trigger file chooser click when clicking paper clip icon
$('#clip-btn').click(function()
{
$('#attach-btn').trigger('click');
});
// trigger file submit on filename change in input type='file'
$('#attach-btn').change(function()
{
$('#submit-form').trigger('click');
});
当我看到'attach-btn
'的内容,即输入文件类型时,文件中有正确的名称,最后修改,大小等等。所以它提交的是好的文件。可以有任何外部原因解析请求时,它是否计为表单字段?
答案 0 :(得分:4)
也许这是一个错字,但你错过了一个&#34;名称&#34;属性,这是强制性的。
<input id="attach-btn" type="file" name="someFile" style="display:none"/>
经过一些测试,在字段中没有名称后,file input
中不会包含List<FileItem>
。您只接受submit input
的默认值(在我的情况下类似于&#34;发送请求&#34;)。
尝试并告诉我们它是否有效。