3

我正在使用Apache-Commons FileUpload library将文件上传到服务器。它工作正常,但突然当我提交文件时,FileItem.isFormField()由于某种原因返回 true。这是我的代码

FileUpload.java小服务程序

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
        }
    }
}

票证.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>

票证.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' 的内容,即输入文件类型时,文件就在那里,它的名称、最后修改时间、大小等都是正确的。所以它是用好的文件提交的。解析请求时是否有任何外部原因将其计为表单字段?

4

1 回答 1

4

也许这是一个错字,但您缺少“名称”属性,这是强制性的。

<input id="attach-btn" type="file" name="someFile" style="display:none"/>

经过一些测试,没有名称的字段,file input不包含在List<FileItem>. 您只收到submit input带有默认值的 (在我的情况下,类似于“发送请求”)。

试试看,告诉我们它是否有效。

于 2013-07-30T11:54:45.023 回答