Java 多部分文件的空检查
我正在Spring控制器中处理两个不同的多部分文件 然后将这两个文件发送到服务以设置实体。但是,如果两个或一个都为null,则会抛出Java 多部分文件的空检查,java,Java,我正在Spring控制器中处理两个不同的多部分文件 然后将这两个文件发送到服务以设置实体。但是,如果两个或一个都为null,则会抛出NullPointerException。如何检查这两个文件(projectImg/chartImg)是否为空 以下是我目前的代码: public void uploadImages(MultipartFile projectImg, MultipartFile chartImg, Long projectId) throws ValidationExceptio
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);
}
谢谢 为了让你接受一个答案,而这个问题并不是“未回答”,我将把我的评论作为一个答案发布: 你可以打电话
if (projectImg != null) { ... }
在之前还是相反
if (projectImg.isEmpty()) { ... }
检查文件是否为null的最佳方法是按以下方式使用MultipartFile
isEmpty()
方法
if(!chartImg.isEmpty()){
// your logic here
}else{
// your logic here
}
if(!projectImg.isEmpty()){
// your logic here
}else{
// your logic here
}
if(projectmg!=null){}
在Spring Boot 2.1中并不总是有效。MultipartFile
总是被填充,即使它不是必需的,所以检查是否发送了可选文件的最可靠方法是
if(file.getSize() > 0)
//file has data
对于定义为
@RequestParam(value = "file", required = false) MultipartFile file
如果(projectmg!=null)
而不是.isEmpty()
或之前,可能?顺便说一句。maximumSizeMB
听起来它的单位是兆字节。不过,在这种情况下,最大大小将是15 TB,这相当大。if(null!=projectmg)
应该执行null检查,而不抛出实际工作的NullPointerException
@FrakCool。不知道我怎么会错过这个。谢谢@很好,谢谢!这不起作用,即使文件是空的,也有一些字节为我归档了。。。也许是标题信息。接受的答案需要更新