@PostMapping("/upload")
public R<String> upload(@RequestPart("file") MultipartFile file) {
if (file.isEmpty()) {
return R.fail("文件为空,请选择文件");
}
// 文件大小校验
if (file.getSize() > maxSize) {
return R.fail("文件大小超出限制 (" + maxSize / 1024 + "KB)");
}
LocalDateTime now = LocalDateTime.now();
String dirName = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
File dir = new File(uploadPath, dirName);
if (!dir.exists()) {
dir.mkdirs();
}
String fileName = now.format(DateTimeFormatter.ofPattern("HH-mm-ss")) + "_" + UUID.randomUUID();
// 保存文件
try {
File destFile = new File(dir, fileName);
file.transferTo(destFile);
// 只允许上传 png、jpg、jpeg 文件,通过 mimetype 校验
Tika tika = new Tika();
String mimeType = tika.detect(destFile);
if (!"image/png".equalsIgnoreCase(mimeType)
&& !"image/jpeg".equalsIgnoreCase(mimeType)
&& !"image/jpg".equalsIgnoreCase(mimeType)
) {
destFile.delete();
return R.fail("只允许上传 png、jpg、jpeg 文件");
}
} catch (Exception e) {
log.error("上传文件失败", e);
return R.fail("上传失败");
}
return R.success(accessPrefix + "/" + dirName + "/" + fileName);
}
Tika 检验上传文件的类型
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 查看minio官网,看到minio可以应用在不同的环境下,这里着重讲一下minio的js版,并在vue中运行,并且...
- 首先要确认你的类型是button还是input,如果是button,按下面步骤操作 我借助了autolt(可生成操...
- 官方网站:http://fex.baidu.com/webuploader/ 限制上传文件的类型为图片和PDF: ...
- elementUI+el-upload 上传文件大小与文件类型校验https://blog.csdn.net/we...