完善文件上传存储服务
This commit is contained in:
parent
e59cffb388
commit
ba5616e5c8
|
|
@ -3,7 +3,9 @@ package com.bonus.system.api;
|
|||
import com.bonus.common.core.web.domain.AjaxResult;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RequestPart;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import com.bonus.common.core.constant.ServiceNameConstants;
|
||||
|
|
@ -34,4 +36,13 @@ public interface RemoteFileService
|
|||
*/
|
||||
@PostMapping(value = "/uploadFiles", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
||||
public AjaxResult uploadFile(@RequestPart(value = "files") MultipartFile[] files);
|
||||
|
||||
/**
|
||||
* 文件删除
|
||||
* 从各个存储平台删除文件
|
||||
* @param objectKey * @param objectKey,除mongodb 存fileid之外,其他均存上传文件的网络路径
|
||||
* @return 成功或失败信息
|
||||
*/
|
||||
@DeleteMapping("/deleteFile")
|
||||
public AjaxResult deleteFile(@RequestParam("objectKey") String objectKey);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,6 +36,11 @@ public class RemoteFileFallbackFactory implements FallbackFactory<RemoteFileServ
|
|||
public AjaxResult uploadFile(MultipartFile[] files) {
|
||||
return AjaxResult.error("多上传文件失败:" + throwable.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult deleteFile(String objectKey) {
|
||||
return AjaxResult.error("删除文件失败:" + throwable.getMessage());
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ public class MimeTypeUtils
|
|||
// 图片
|
||||
"bmp", "gif", "jpg", "jpeg", "png",
|
||||
// word excel powerpoint
|
||||
"doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt",
|
||||
"doc", "docx", "xls", "xlsx","csv", "ppt", "pptx", "html", "htm", "txt",
|
||||
// 压缩文件
|
||||
"rar", "zip", "gz", "bz2",
|
||||
// 视频格式
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
import com.alibaba.nacos.common.utils.IoUtils;
|
||||
import com.bonus.common.core.utils.file.MimeTypeUtils;
|
||||
import com.bonus.file.service.ISysFileService;
|
||||
import com.bonus.file.utils.FileUploadUtils;
|
||||
import com.bonus.system.api.domain.SysFile;
|
||||
|
|
@ -49,6 +50,9 @@ public class FastDfsSysFileServiceImpl implements ISysFileService
|
|||
@Override
|
||||
public SysFile uploadFile(MultipartFile file) throws Exception
|
||||
{
|
||||
//验证文件扩展名是否合法
|
||||
FileUploadUtils.assertAllowed(file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
|
||||
|
||||
String fileName = FileUploadUtils.extractFilename(file);
|
||||
InputStream inputStream = file.getInputStream();
|
||||
StorePath storePath = storageClient.uploadFile(inputStream, file.getSize(),
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import java.io.InputStream;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.bonus.common.core.utils.file.MimeTypeUtils;
|
||||
import com.bonus.file.service.ISysFileService;
|
||||
import io.minio.RemoveObjectArgs;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
|
@ -48,6 +49,9 @@ public class MinioSysFileServiceImpl implements ISysFileService
|
|||
@Override
|
||||
public SysFile uploadFile(MultipartFile file) throws Exception
|
||||
{
|
||||
//验证文件扩展名和大小
|
||||
FileUploadUtils.assertAllowed(file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
|
||||
|
||||
String fileName = FileUploadUtils.extractFilename(file);
|
||||
InputStream inputStream = file.getInputStream();
|
||||
PutObjectArgs args = PutObjectArgs.builder()
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
package com.bonus.file.service.impl;
|
||||
|
||||
import com.bonus.common.core.utils.file.MimeTypeUtils;
|
||||
import com.bonus.file.service.ISysFileService;
|
||||
import com.bonus.file.utils.FileUploadUtils;
|
||||
import com.bonus.system.api.domain.SysFile;
|
||||
|
||||
import com.mongodb.client.gridfs.model.GridFSFile;
|
||||
|
|
@ -52,6 +54,10 @@ public class MongodbServiceImpl implements ISysFileService {
|
|||
|
||||
@Override
|
||||
public SysFile uploadFile(MultipartFile file) throws Exception {
|
||||
|
||||
//验证文件扩展名和大小
|
||||
FileUploadUtils.assertAllowed(file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
|
||||
|
||||
String fileName = file.getOriginalFilename();
|
||||
long fileSize = file.getSize();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
package com.bonus.file.service.impl;
|
||||
|
||||
import com.bonus.common.core.domain.R;
|
||||
import com.bonus.common.core.utils.file.MimeTypeUtils;
|
||||
import com.bonus.file.service.ISysFileService;
|
||||
import com.bonus.file.utils.FileUploadUtils;
|
||||
import com.bonus.file.utils.ObsUtils;
|
||||
import com.alibaba.nacos.common.utils.UuidUtils;
|
||||
import com.bonus.common.core.utils.file.FileUtils;
|
||||
|
|
@ -46,18 +48,20 @@ public class ObsServiceImpl implements ISysFileService {
|
|||
* @return 文件信息
|
||||
*/
|
||||
@Override
|
||||
public SysFile uploadFile(MultipartFile file) {
|
||||
public SysFile uploadFile(MultipartFile file) throws Exception {
|
||||
try {
|
||||
//验证文件扩展名和大小
|
||||
FileUploadUtils.assertAllowed(file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
|
||||
|
||||
String originalFilename = Objects.requireNonNull(file.getOriginalFilename(), "文件名不能为空");
|
||||
String extension = originalFilename.substring(originalFilename.lastIndexOf('.'));
|
||||
String objectKey = UuidUtils.generateUuid() + extension;
|
||||
objectKey = FileUtils.generateObjectName(objectKey);
|
||||
|
||||
SysFile sysFile = obsUtils.uploadFile(objectKey, FileUtils.multipartFileToFile(file));
|
||||
SysFile sysFile = obsUtils.uploadFile(objectKey, Objects.requireNonNull(FileUtils.multipartFileToFile(file)));
|
||||
sysFile.setName(originalFilename);
|
||||
return sysFile;
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
throw new Exception(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,8 +5,10 @@ import com.aliyun.oss.model.OSSObject;
|
|||
import com.bonus.common.core.domain.R;
|
||||
import com.bonus.common.core.utils.StringUtils;
|
||||
import com.bonus.common.core.utils.file.FileUtils;
|
||||
import com.bonus.common.core.utils.file.MimeTypeUtils;
|
||||
import com.bonus.file.controller.SysFileController;
|
||||
import com.bonus.file.service.ISysFileService;
|
||||
import com.bonus.file.utils.FileUploadUtils;
|
||||
import com.bonus.file.utils.OssUtils;
|
||||
import com.bonus.system.api.domain.SysFile;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
|
|
@ -54,6 +56,9 @@ public class OssServiceImpl implements ISysFileService {
|
|||
throw new Exception("文件名为空");
|
||||
}
|
||||
try {
|
||||
//验证文件扩展名和大小
|
||||
FileUploadUtils.assertAllowed(file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
|
||||
|
||||
String originalFilename = Objects.requireNonNull(file.getOriginalFilename(), "文件名不能为空");
|
||||
String extension = originalFilename.substring(originalFilename.lastIndexOf('.'));
|
||||
String objectKey = UuidUtils.generateUuid() + extension;
|
||||
|
|
|
|||
|
|
@ -127,11 +127,12 @@ public class FileUploadUtils
|
|||
public static final void assertAllowed(MultipartFile file, String[] allowedExtension)
|
||||
throws FileSizeLimitExceededException, InvalidExtensionException
|
||||
{
|
||||
long size = file.getSize();
|
||||
if (size > DEFAULT_MAX_SIZE)
|
||||
{
|
||||
throw new FileSizeLimitExceededException(DEFAULT_MAX_SIZE / 1024 / 1024);
|
||||
}
|
||||
// 这里不验证文件大小,使用Spring MVC中上传文件的最大大小 spring.servlet.multipart.max-file-size
|
||||
// long size = file.getSize();
|
||||
// if (size > DEFAULT_MAX_SIZE)
|
||||
// {
|
||||
// throw new FileSizeLimitExceededException(DEFAULT_MAX_SIZE / 1024 / 1024);
|
||||
// }
|
||||
|
||||
String fileName = file.getOriginalFilename();
|
||||
String extension = FileTypeUtils.getExtension(file);
|
||||
|
|
|
|||
Loading…
Reference in New Issue