|
@@ -1,13 +1,20 @@
|
|
|
package com.miaxis.system.controller.common;
|
|
|
|
|
|
+import com.miaxis.common.aliyunOSS.AliyunConfig;
|
|
|
+import com.miaxis.common.aliyunOSS.AliyunUpload;
|
|
|
+import com.miaxis.common.annotation.Log;
|
|
|
import com.miaxis.common.config.MiaxisConfig;
|
|
|
import com.miaxis.common.constant.Constants;
|
|
|
import com.miaxis.common.core.domain.Response;
|
|
|
+import com.miaxis.common.enums.BusinessTypeEnum;
|
|
|
+import com.miaxis.common.enums.FileUploadTypeEnum;
|
|
|
+import com.miaxis.common.exception.CustomException;
|
|
|
+import com.miaxis.common.utils.EnumUtils;
|
|
|
import com.miaxis.common.utils.StringUtils;
|
|
|
-import com.miaxis.common.utils.file.FileUploadUtils;
|
|
|
import com.miaxis.common.utils.file.FileUtils;
|
|
|
+import com.miaxis.file.domain.FileInfo;
|
|
|
+import com.miaxis.file.service.IFileInfoService;
|
|
|
import com.miaxis.framework.config.ServerConfig;
|
|
|
-import com.miaxis.system.dto.common.UploadFileDTO;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
@@ -22,6 +29,9 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.IOException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
|
|
|
/**
|
|
|
* 通用请求处理
|
|
@@ -37,73 +47,108 @@ public class CommonController
|
|
|
@Autowired
|
|
|
private ServerConfig serverConfig;
|
|
|
|
|
|
- /**
|
|
|
- * 通用下载请求
|
|
|
- *
|
|
|
- * @param fileName 文件名称
|
|
|
- * @param delete 是否删除
|
|
|
- */
|
|
|
- @GetMapping("common/download")
|
|
|
- @ApiOperation("通用下载请求")
|
|
|
- public void fileDownload(
|
|
|
- @ApiParam(name = "fileName", value = "文件名称")
|
|
|
- @RequestParam(name = "fileName", required = true) String fileName,
|
|
|
- @ApiParam(name = "delete", value = "是否删除")
|
|
|
- @RequestParam(name = "delete", required = true) Boolean delete,
|
|
|
- HttpServletResponse response,
|
|
|
- HttpServletRequest request)
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- if (!FileUtils.isValidFilename(fileName))
|
|
|
- {
|
|
|
- throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
|
|
|
- }
|
|
|
- String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
|
|
|
- String filePath = MiaxisConfig.getDownloadPath() + fileName;
|
|
|
-
|
|
|
- response.setCharacterEncoding("utf-8");
|
|
|
- response.setContentType("multipart/form-data");
|
|
|
- response.setHeader("Content-Disposition",
|
|
|
- "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, realFileName));
|
|
|
- FileUtils.writeBytes(filePath, response.getOutputStream());
|
|
|
- if (delete)
|
|
|
- {
|
|
|
- FileUtils.deleteFile(filePath);
|
|
|
- }
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
- log.error("下载文件失败", e);
|
|
|
- }
|
|
|
- }
|
|
|
+ @Autowired
|
|
|
+ private IFileInfoService fileInfoService;
|
|
|
+
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
- * 通用上传请求
|
|
|
+ * 上传文件
|
|
|
*/
|
|
|
- @PostMapping("/common/upload")
|
|
|
+ @Log(title = "上传文件", businessType = BusinessTypeEnum.INSERT)
|
|
|
+ @PostMapping(Constants.OPEN_PREFIX+"/common/file")
|
|
|
@ApiOperation("通用上传请求")
|
|
|
- public Response<UploadFileDTO> uploadFile(MultipartFile file) throws Exception
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- // 上传文件路径
|
|
|
- String filePath = MiaxisConfig.getUploadPath();
|
|
|
- // 上传并返回新文件名称
|
|
|
- String fileName = FileUploadUtils.upload(filePath, file);
|
|
|
- String url = serverConfig.getUrl() + fileName;
|
|
|
- UploadFileDTO uploadFileDTO = new UploadFileDTO();
|
|
|
- uploadFileDTO.setFileName(fileName);
|
|
|
- uploadFileDTO.setUrl(url);
|
|
|
-
|
|
|
- return Response.success(uploadFileDTO);
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
- return Response.error().setMsg(e.getMessage());
|
|
|
+ public Response<FileInfo> updateload(MultipartFile file, Integer fileType) throws IOException {
|
|
|
+ FileUploadTypeEnum fileUploadTypeEnum = getPathByType(fileType);
|
|
|
+ String originalFilename = file.getOriginalFilename();
|
|
|
+ //获取最后一个.的位置
|
|
|
+ int lastIndexOf = originalFilename.lastIndexOf(".");
|
|
|
+ //获取文件的后缀名
|
|
|
+ String suffix = originalFilename.substring(lastIndexOf);
|
|
|
+ if (!validateFileSuffix(suffix,fileUploadTypeEnum)){
|
|
|
+ throw new CustomException("文件类型不合法");
|
|
|
}
|
|
|
+ //存储的文件名
|
|
|
+ String storagefileName = System.currentTimeMillis() + suffix;
|
|
|
+ String savePath = AliyunConfig.GZPT_PATH
|
|
|
+ + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) +"/"+
|
|
|
+ fileUploadTypeEnum.getFileType() +"/";
|
|
|
+ String fileUrl = AliyunUpload.uploadForStream(file.getInputStream(), savePath, storagefileName);
|
|
|
+ FileInfo fileInfo = new FileInfo();
|
|
|
+ fileInfo.setFileType(fileUploadTypeEnum.getFileType());
|
|
|
+ fileInfo.setFilePath(savePath+storagefileName);
|
|
|
+ fileInfo.setFileUrl(fileUrl);
|
|
|
+ fileInfoService.save(fileInfo);
|
|
|
+ return Response.success(fileInfo);
|
|
|
}
|
|
|
|
|
|
+// /**
|
|
|
+// * 通用下载请求
|
|
|
+// *
|
|
|
+// * @param fileName 文件名称
|
|
|
+// * @param delete 是否删除
|
|
|
+// */
|
|
|
+// @GetMapping("common/download")
|
|
|
+// @ApiOperation("通用下载请求")
|
|
|
+// public void fileDownload(
|
|
|
+// @ApiParam(name = "fileName", value = "文件名称")
|
|
|
+// @RequestParam(name = "fileName", required = true) String fileName,
|
|
|
+// @ApiParam(name = "delete", value = "是否删除")
|
|
|
+// @RequestParam(name = "delete", required = true) Boolean delete,
|
|
|
+// HttpServletResponse response,
|
|
|
+// HttpServletRequest request)
|
|
|
+// {
|
|
|
+// try
|
|
|
+// {
|
|
|
+// if (!FileUtils.isValidFilename(fileName))
|
|
|
+// {
|
|
|
+// throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
|
|
|
+// }
|
|
|
+// String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
|
|
|
+// String filePath = MiaxisConfig.getDownloadPath() + fileName;
|
|
|
+//
|
|
|
+// response.setCharacterEncoding("utf-8");
|
|
|
+// response.setContentType("multipart/form-data");
|
|
|
+// response.setHeader("Content-Disposition",
|
|
|
+// "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, realFileName));
|
|
|
+// FileUtils.writeBytes(filePath, response.getOutputStream());
|
|
|
+// if (delete)
|
|
|
+// {
|
|
|
+// FileUtils.deleteFile(filePath);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// catch (Exception e)
|
|
|
+// {
|
|
|
+// log.error("下载文件失败", e);
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// /**
|
|
|
+// * 通用上传请求
|
|
|
+// */
|
|
|
+// @PostMapping("/common/upload")
|
|
|
+// @ApiOperation("通用上传请求")
|
|
|
+// public Response<UploadFileDTO> uploadFile(MultipartFile file) throws Exception
|
|
|
+// {
|
|
|
+// try
|
|
|
+// {
|
|
|
+// // 上传文件路径
|
|
|
+// String filePath = MiaxisConfig.getUploadPath();
|
|
|
+// // 上传并返回新文件名称
|
|
|
+// String fileName = FileUploadUtils.upload(filePath, file);
|
|
|
+// String url = serverConfig.getUrl() + fileName;
|
|
|
+// UploadFileDTO uploadFileDTO = new UploadFileDTO();
|
|
|
+// uploadFileDTO.setFileName(fileName);
|
|
|
+// uploadFileDTO.setUrl(url);
|
|
|
+//
|
|
|
+// return Response.success(uploadFileDTO);
|
|
|
+// }
|
|
|
+// catch (Exception e)
|
|
|
+// {
|
|
|
+// return Response.error().setMsg(e.getMessage());
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
/**
|
|
|
* 本地资源通用下载
|
|
|
*/
|
|
@@ -126,4 +171,32 @@ public class CommonController
|
|
|
"attachment;fileName=" + FileUtils.setFileDownloadHeader(request, downloadName));
|
|
|
FileUtils.writeBytes(downloadPath, response.getOutputStream());
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ private Boolean validateFileSuffix(String originalFilenamefile, FileUploadTypeEnum fileUploadTypeEnum) {
|
|
|
+ if (fileUploadTypeEnum == null){
|
|
|
+ throw new CustomException("fileType参数不合法");
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(originalFilenamefile)){
|
|
|
+ throw new CustomException("文件名不合法");
|
|
|
+ }
|
|
|
+ String[] allowSuffixs = fileUploadTypeEnum.getSuffix();
|
|
|
+ for(String suffix : allowSuffixs){
|
|
|
+ String fileSuffix = "."+suffix;
|
|
|
+ if (originalFilenamefile.equals(fileSuffix)){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private FileUploadTypeEnum getPathByType(Integer fileType) {
|
|
|
+ if (fileType == null){
|
|
|
+ throw new CustomException("文件类型不能为空");
|
|
|
+ }
|
|
|
+ return (FileUploadTypeEnum) EnumUtils.getEnumEntityByCode(FileUploadTypeEnum.class, fileType);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|