空检查多部分文件

时间:2017-10-25 13:59:34

标签: java

我在Spring控制器中处理两个不同的多部分文件。

然后将这两个文件发送到服务以设置实体。但是如果两个或一个为空,则抛出NullPointerException。如何检查两个文件(projectImg / chartImg)中的任何一个是否为空?

到目前为止,这是我的代码:

public void uploadImages(MultipartFile projectImg, MultipartFile chartImg,  Long projectId) throws ValidationException, IOException {
    Project project = projectRepository.findOne(projectId);
    Project save = projectRepository.save(project);

    int maximumSizeMB = 15000000;

    if (!projectImg.isEmpty()) {
        if (projectImg.getSize() > maximumSizeMB) {
            throw new ValidationException("Image size is too big. Maximum size is 15 MB");
        }

        byte[] projectFile = ImageCompression.compressImage(projectImg);
        project.setProjectImg(projectFile);
        save.getProjectImg();
    }
    if (!chartImg.isEmpty()) {
        if (chartImg.getSize() > maximumSizeMB) {
            throw new ValidationException("Image size is too big. Maximum size is 15 MB");
        }

        byte[] chartFile = ImageCompression.compressImage(chartImg);
        project.setChartImg(chartFile);
        save.getChartImg();
    }
    projectRepository.save(project);
}

谢谢!

3 个答案:

答案 0 :(得分:3)

只是为了让你接受一个答案而且这个问题并没有得到解答,而且还没有回复#34;我会将我的评论作为答案发布:

你可以打电话

if (projectImg != null) { ... }

之前或之后

if (projectImg.isEmpty()) { ... }

答案 1 :(得分:0)

检查文件是否为null的最佳方法是以下面的方式使用MultipartFile isEmpty()方法。

if(!chartImg.isEmpty()){
 // your logic here 
}else{
 // your logic here 
}


if(!projectImg.isEmpty()){
// your logic here 
}else{
 // your logic here 
}

if(projectImg != null){ }并不总是有效

答案 2 :(得分:0)

在Spring Boot 2.1中。* MultipartFile总是被填充,即使不是必需的,因此检查我发现的是否发送了可选文件的最可靠方法是

if(file.getSize() > 0)
    //file has data

对于定义为

的request参数
@RequestParam(value = "file", required = false) MultipartFile file