文件是否附加在文件字段中?

时间:2013-04-23 14:14:41

标签: java servlets file-upload apache-commons-fileupload

我有以下代码:

if (formItems != null && formItems.size() > 0) {
    // iterates over form's fields
    for (FileItem item : formItems) {
        // processes only fields that are not form fields
        if (!item.isFormField()) {
            String fileName = new File(item.getName()).getName();
            String filePath = uploadPath + File.separator + fileName;
            File storeFile = new File(filePath);

            // saves the file on disk
            item.write(storeFile);
            session.setAttribute("image", fileName);
        }
        // processes only form fields
        else {
            String fieldname = item.getFieldName();
            String fieldvalue = item.getString();
            session.setAttribute(fieldname, fieldvalue);
        }
    }
}

我想首先检查是否附加了文件。如果已连接,则仅上载文件。我试过这个:

if(item==null)

但这不起作用。如何检查文件是否附加?我有一个文件字段:

<input type="file" name="image"/>

2 个答案:

答案 0 :(得分:5)

item永远不会null

只需检查FileItem#getName()(文件名)是否为空和/或FileItem#getSize()(文件大小)是否等于0

在您的特定情况下,使用<input type="file" name="image"/>,即:

if (!item.isFormField()) {
    if ("image".equals(item.getFieldName())) {
        if (item.getName() == null || item.getName().isEmpty()) {
            // No file was been selected.
        }

        if (item.getSize() == 0) {
            // No file was been selected, or it was an empty file.
        }
    }
}

答案 1 :(得分:0)

您可以使用以下代码检查您的文件上传控件是否具有任何值。 filename是我的文件上传控件的名称

if ("filename".equals(item.getFieldName()) && item.getSize() > 0) {
    // your code here
} else {
    // Exception handling as no file chosen/attached
}