我在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);
}
谢谢!
答案 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