【问题标题】:Unable to iterate over List<MultipartFile>无法迭代 List<MultipartFile>
【发布时间】:2016-01-29 11:03:01
【问题描述】:

以下是我从网页上传多个文件的功能。我的文件在 MultipartFile 列表 --> 文件变量中。我无法遍历每个文件。但是 log.info("file"+files) 打印了 file[]。这意味着文件返回“[]”。这是什么意思?我哪里错了?

public String addNodeAndDocNew(TreeType treeType, ObjectId parentNodeId, NodeType nodeType, String displayName, String attrList, List<MultipartFile> files, String userId,
        String passwd) {
    String result = "";
    log.info("file"+ files);
    log.info("userId=" + userId);
    log.info("passwd=" + passwd);
    log.info("nodeType=" + nodeType);
    log.info("displayName=" + displayName);
    if (attrList != null)
        log.info("attributesList=" + attrList.toString());
    ObjectId nodeId = null;
    for(MultipartFile file : files)
    {
        log.info("Yess");
        if (file.isEmpty()) {
            log.info("Nothing attached, just adding node, not the doc");
            nodeId = addNode(treeType, parentNodeId, nodeType, displayName, attrList, userId, passwd);
            if (nodeId != null)
                log.info("Just added node, no doc sent");
        }

        else {
            log.info("file=" + file.getOriginalFilename());
            nodeId = addNode(treeType, parentNodeId, nodeType, displayName, attrList, userId, passwd);
            if (nodeId != null) {
                docService.uploadDoc(nodeId, file, userId, passwd);
                log.info("Added node, and doc");
            } else {
                log.info("addNode() returned null");
            }
        }

    if (nodeId != null) {
        log.info("addNodeAndDoc completed for node id : " + nodeId.toString());
        result += nodeId.toString()+ "@@";
    } else
        return null;
    }
    log.info("Yess1");
    return result;
}

【问题讨论】:

  • 问题出在哪一行(那里:“for(MultipartFile file : files)”)?如果你运行这个程序,你的输出是什么?

标签: java iterator multipartform-data


【解决方案1】:

但是 log.info(files) 打印了 File[].

所以,你给定的数组是空的。这就是为什么你不能迭代它! ;)

【讨论】:

  • 抱歉,log.info("file"+files) 打印了文件[]。这是什么意思?
【解决方案2】:

您正在使用增强的for 循环,并且增强的for 循环保护自身不会失败,如果它试图迭代的列表是空的,因为不执行该块。这正是这里发生的事情。

在您可能遇到empty 的情况下检查它始终是一个好习惯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 2019-03-26
    • 2018-07-18
    相关资源
    最近更新 更多