multipartfile 图片上传大小限制在20M,如果大于20M则压缩至20M,java代码示例
时间: 2024-02-20 09:58:56 浏览: 130
好的,以下是Java代码示例,可以实现您所需的功能:
```java
import org.springframework.web.multipart.MultipartFile;
import net.coobird.thumbnailator.Thumbnails;
import java.io.File;
import java.io.IOException;
public class ImageUtils {
public static final long MAX_SIZE = 20 * 1024 * 1024; // 最大20M
public static File compressImage(MultipartFile file) throws IOException {
if (file.isEmpty()) {
throw new RuntimeException("文件不能为空");
}
if (file.getSize() <= MAX_SIZE) {
return convertToFile(file);
} else {
return compressToFile(file);
}
}
private static File convertToFile(MultipartFile file) throws IOException {
File tempFile = File.createTempFile("temp", null);
file.transferTo(tempFile);
return tempFile;
}
private static File compressToFile(MultipartFile file) throws IOException {
File tempFile = File.createTempFile("temp", null);
Thumbnails.of(file.getInputStream())
.scale(1)
.outputQuality(0.5f)
.toFile(tempFile);
return tempFile;
}
}
```
代码中,使用了开源库Thumbnailator来进行图片压缩。其中,`MAX_SIZE`变量表示最大的文件大小,`compressImage`方法用于判断文件大小并进行压缩,`convertToFile`方法用于将上传的文件转换为临时文件,`compressToFile`方法用于压缩文件并返回临时文件。在实际使用中,可以根据需要进行修改和调整。
阅读全文