在我的JSP
中,我有一个表单,用户可以在其中上传文件。
<form method="post" action="linkToAction" role="form" enctype="multipart/form-data">
<input name="files" type="file" class="form-control-file" multiple="true" >
</form>
阅读此答案,在我的servlet
中,我上传了文件:
List<Part> fileParts = request.getParts().stream().filter(part -> "files".equals(part.getName())).collect(Collectors.toList());
如果用户不上传任何内容,我希望List<Part> fileParts
为空!但是,它并不像上面语句在列表中添加的那样fileParts
,一个空Part
。如果用户上传 1 个文件,则上述语句将再次添加 1 个有效Part
对象。
我认为的一个快速解决方案是检查文件名的长度:
for (Part filePart : fileParts) {
String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString(); /
if (fileName.length() != 0) {
//do my job here
}
}
但是,为什么会这样呢?
您需要检查Part#getSize()
是否大于0
。
List<Part> nonEmptyFileParts = request.getParts().stream()
.filter(part -> "files".equals(part.getName()) && part.getSize() > 0)
.collect(Collectors.toList());
参考答案同时已更新,谢谢。
您可以在stream
本身中检查空条件。
List<Part> fileParts = request.getParts().stream()
.filter(part -> "files".equals(part.getName()) && Objects.nonNull(part.getName()))
.collect(Collectors.toList());