|
@@ -1,6 +1,6 @@
|
|
|
-
|
|
|
package com.qunzhixinxi.hnqz.admin.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.date.DatePattern;
|
|
|
import cn.hutool.core.io.FileUtil;
|
|
|
import cn.hutool.core.io.IoUtil;
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
@@ -22,10 +22,12 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.File;
|
|
|
import java.io.FileInputStream;
|
|
|
import java.io.InputStream;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
@@ -41,202 +43,202 @@ import java.util.Map;
|
|
|
@AllArgsConstructor
|
|
|
public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> implements SysFileService {
|
|
|
|
|
|
- private final OssProperties ossProperties;
|
|
|
+ private final OssProperties ossProperties;
|
|
|
|
|
|
- private final OssTemplate minioTemplate;
|
|
|
+ private final OssTemplate minioTemplate;
|
|
|
|
|
|
- private final UpmsConfig upmsConfig;
|
|
|
+ private final UpmsConfig upmsConfig;
|
|
|
|
|
|
- /**
|
|
|
- * 上传文件
|
|
|
- * @param file
|
|
|
- * @return
|
|
|
- */
|
|
|
- @Override
|
|
|
- public R uploadFile(MultipartFile file) {
|
|
|
+ /**
|
|
|
+ * 上传文件
|
|
|
+ *
|
|
|
+ * @param file 文件
|
|
|
+ * @return 上传结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public R<Map<String, String>> uploadFile(MultipartFile file) {
|
|
|
|
|
|
- // 判断是否有重名的操作
|
|
|
+ // 判断是否有重名的操作
|
|
|
|
|
|
|
|
|
- String fileName = IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename());
|
|
|
- Map<String, String> resultMap = new HashMap<>(4);
|
|
|
- resultMap.put("bucketName", ossProperties.getBucketName());
|
|
|
- resultMap.put("fileName", fileName);
|
|
|
- resultMap.put("url", String.format("/admin/sys-file/%s/%s", ossProperties.getBucketName(), fileName));
|
|
|
+ String fileName = IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename());
|
|
|
+ Map<String, String> resultMap = new HashMap<>(4);
|
|
|
+ resultMap.put("bucketName", ossProperties.getBucketName());
|
|
|
+ resultMap.put("fileName", DateTimeFormatter.ofPattern(DatePattern.PURE_DATE_PATTERN).format(LocalDateTime.now()) + File.separator + fileName);
|
|
|
+ resultMap.put("url", String.format("/admin/sys-file/%s/%s", ossProperties.getBucketName(), fileName));
|
|
|
|
|
|
- try {
|
|
|
- minioTemplate.putObject(ossProperties.getBucketName(), fileName, file.getInputStream());
|
|
|
- // 文件管理数据记录,收集管理追踪文件
|
|
|
- SysFile sysFile = fileLog(file, fileName);
|
|
|
- resultMap.put("fileId", String.valueOf(sysFile.getId()));
|
|
|
+ try {
|
|
|
+ minioTemplate.putObject(ossProperties.getBucketName(), fileName, file.getInputStream());
|
|
|
+ // 文件管理数据记录,收集管理追踪文件
|
|
|
+ SysFile sysFile = fileLog(file, fileName);
|
|
|
+ resultMap.put("fileId", String.valueOf(sysFile.getId()));
|
|
|
|
|
|
- }
|
|
|
- catch (Exception e) {
|
|
|
- log.error("上传失败", e);
|
|
|
- return R.failed(e.getLocalizedMessage());
|
|
|
- }
|
|
|
- return R.ok(resultMap);
|
|
|
- }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("上传失败", e);
|
|
|
+ return R.failed(e.getLocalizedMessage());
|
|
|
+ }
|
|
|
+ return R.ok(resultMap);
|
|
|
+ }
|
|
|
|
|
|
|
|
|
- /**
|
|
|
- * 上传文件
|
|
|
- * @param file
|
|
|
- * @return
|
|
|
- */
|
|
|
- @Override
|
|
|
- public R uploadFileAllUrl(MultipartFile file) {
|
|
|
+ /**
|
|
|
+ * 上传文件
|
|
|
+ *
|
|
|
+ * @param file
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public R uploadFileAllUrl(MultipartFile file) {
|
|
|
// String basePath="https://beijingc.yaoyi.net";
|
|
|
- String fileName = IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename());
|
|
|
- Map<String, String> resultMap = new HashMap<>(4);
|
|
|
- resultMap.put("bucketName", ossProperties.getBucketName());
|
|
|
- resultMap.put("fileName", fileName);
|
|
|
- resultMap.put("url", upmsConfig.getClientUrl()+String.format("/admin/sys-file/%s/%s", ossProperties.getBucketName(), fileName));
|
|
|
-
|
|
|
- try {
|
|
|
- minioTemplate.putObject(ossProperties.getBucketName(), fileName, file.getInputStream());
|
|
|
- // 文件管理数据记录,收集管理追踪文件
|
|
|
- fileLog(file, fileName);
|
|
|
- }
|
|
|
- catch (Exception e) {
|
|
|
- log.error("上传失败", e);
|
|
|
- return R.failed(e.getLocalizedMessage());
|
|
|
- }
|
|
|
- return R.ok(resultMap);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 上传文件
|
|
|
- * @param file
|
|
|
- * @return
|
|
|
- */
|
|
|
- @Override
|
|
|
- public R uploadFileAllUrlRealName(MultipartFile file) {
|
|
|
+ String fileName = IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename());
|
|
|
+ Map<String, String> resultMap = new HashMap<>(4);
|
|
|
+ resultMap.put("bucketName", ossProperties.getBucketName());
|
|
|
+ resultMap.put("fileName", fileName);
|
|
|
+ resultMap.put("url", upmsConfig.getClientUrl() + String.format("/admin/sys-file/%s/%s", ossProperties.getBucketName(), fileName));
|
|
|
+
|
|
|
+ try {
|
|
|
+ minioTemplate.putObject(ossProperties.getBucketName(), fileName, file.getInputStream());
|
|
|
+ // 文件管理数据记录,收集管理追踪文件
|
|
|
+ fileLog(file, fileName);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("上传失败", e);
|
|
|
+ return R.failed(e.getLocalizedMessage());
|
|
|
+ }
|
|
|
+ return R.ok(resultMap);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 上传文件
|
|
|
+ *
|
|
|
+ * @param file
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public R uploadFileAllUrlRealName(MultipartFile file) {
|
|
|
// String basePath="https://beijingc.yaoyi.net";
|
|
|
- Date date=new Date();
|
|
|
- SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
|
- String idStr=format.format(date);
|
|
|
- String fileName =FileUtil.getName(file.getName())+"-"+ idStr + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename());
|
|
|
- Map<String, String> resultMap = new HashMap<>(4);
|
|
|
- resultMap.put("bucketName", ossProperties.getBucketName());
|
|
|
- resultMap.put("fileName", fileName);
|
|
|
- resultMap.put("url", upmsConfig.getClientUrl()+String.format("/admin/sys-file/%s/%s", ossProperties.getBucketName(), fileName));
|
|
|
-
|
|
|
- try {
|
|
|
- minioTemplate.putObject(ossProperties.getBucketName(), fileName, file.getInputStream());
|
|
|
- // 文件管理数据记录,收集管理追踪文件
|
|
|
- fileLog(file, fileName);
|
|
|
- }
|
|
|
- catch (Exception e) {
|
|
|
- log.error("上传失败", e);
|
|
|
- return R.failed(e.getLocalizedMessage());
|
|
|
- }
|
|
|
- return R.ok(resultMap);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 上传文件
|
|
|
- * @return
|
|
|
- */
|
|
|
- @Override
|
|
|
- public R uploadFileAllUrlRealName(String fileName, String suffix, FileInputStream io) {
|
|
|
-
|
|
|
- Date date=new Date();
|
|
|
- SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
|
- String idStr=format.format(date);
|
|
|
-
|
|
|
- fileName = String.format("%s-%s.%s",fileName,idStr,suffix);
|
|
|
-
|
|
|
- Map<String, String> resultMap = new HashMap<>(4);
|
|
|
- resultMap.put("bucketName", ossProperties.getBucketName());
|
|
|
- resultMap.put("fileName", fileName);
|
|
|
- resultMap.put("url", String.format("%s/admin/sys-file/%s/%s",upmsConfig.getClientUrl(), ossProperties.getBucketName(), fileName));
|
|
|
-
|
|
|
- try {
|
|
|
- minioTemplate.putObject(ossProperties.getBucketName(), fileName, io);
|
|
|
- }
|
|
|
- catch (Exception e) {
|
|
|
- log.error("上传失败", e);
|
|
|
- return R.failed(e.getLocalizedMessage());
|
|
|
- }
|
|
|
- return R.ok(resultMap);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 读取文件
|
|
|
- * @param bucket
|
|
|
- * @param fileName
|
|
|
- * @param response
|
|
|
- */
|
|
|
- @Override
|
|
|
- public void getFile(String bucket, String fileName, HttpServletResponse response) {
|
|
|
- try (InputStream inputStream = minioTemplate.getObject(bucket, fileName)) {
|
|
|
- response.setContentType("application/octet-stream; charset=UTF-8");
|
|
|
- IoUtil.copy(inputStream, response.getOutputStream());
|
|
|
- }
|
|
|
- catch (Exception e) {
|
|
|
- log.error("文件读取异常: {}", e.getLocalizedMessage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 删除文件
|
|
|
- * @param id
|
|
|
- * @return
|
|
|
- */
|
|
|
- @Override
|
|
|
- @SneakyThrows
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public Boolean deleteFile(Long id) {
|
|
|
- SysFile file = this.getById(id);
|
|
|
- minioTemplate.removeObject(ossProperties.getBucketName(), file.getFileName());
|
|
|
- return this.removeById(id);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 文件管理数据记录,收集管理追踪文件
|
|
|
- * @param file 上传文件格式
|
|
|
- * @param fileName 文件名
|
|
|
- */
|
|
|
- private SysFile fileLog(MultipartFile file, String fileName) {
|
|
|
- SysFile sysFile = new SysFile();
|
|
|
- // 原文件名
|
|
|
- String original = file.getOriginalFilename();
|
|
|
- sysFile.setFileName(fileName);
|
|
|
- sysFile.setOriginal(original);
|
|
|
- sysFile.setFileSize(file.getSize());
|
|
|
- sysFile.setType(FileUtil.extName(original));
|
|
|
- sysFile.setBucketName(ossProperties.getBucketName());
|
|
|
- if(null!=SecurityUtils.getUser())
|
|
|
- {
|
|
|
- sysFile.setCreateUser(SecurityUtils.getUser().getUsername());
|
|
|
- }
|
|
|
- this.save(sysFile);
|
|
|
- return sysFile;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- @Override
|
|
|
- public String uploadImgByByte(InputStream inputStream) {
|
|
|
- String fileName = IdUtil.simpleUUID() + StrUtil.DOT + ".jpg";
|
|
|
- Map<String, String> resultMap = new HashMap<>(4);
|
|
|
- resultMap.put("bucketName", ossProperties.getBucketName());
|
|
|
- resultMap.put("fileName", fileName);
|
|
|
- resultMap.put("url", String.format("/admin/sys-file/%s/%s", ossProperties.getBucketName(), fileName));
|
|
|
-
|
|
|
- try {
|
|
|
- minioTemplate.putObject(ossProperties.getBucketName(), fileName, inputStream);
|
|
|
- // 文件管理数据记录,收集管理追踪文件
|
|
|
- //fileLog(file, fileName);
|
|
|
- return String.format("/admin/sys-file/%s/%s", ossProperties.getBucketName(), fileName);
|
|
|
- }
|
|
|
- catch (Exception e) {
|
|
|
- log.error("上传失败", e);
|
|
|
- }
|
|
|
-
|
|
|
- return null;
|
|
|
- }
|
|
|
+ Date date = new Date();
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
|
+ String idStr = format.format(date);
|
|
|
+ String fileName = FileUtil.getName(file.getName()) + "-" + idStr + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename());
|
|
|
+ Map<String, String> resultMap = new HashMap<>(4);
|
|
|
+ resultMap.put("bucketName", ossProperties.getBucketName());
|
|
|
+ resultMap.put("fileName", fileName);
|
|
|
+ resultMap.put("url", upmsConfig.getClientUrl() + String.format("/admin/sys-file/%s/%s", ossProperties.getBucketName(), fileName));
|
|
|
+
|
|
|
+ try {
|
|
|
+ minioTemplate.putObject(ossProperties.getBucketName(), fileName, file.getInputStream());
|
|
|
+ // 文件管理数据记录,收集管理追踪文件
|
|
|
+ fileLog(file, fileName);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("上传失败", e);
|
|
|
+ return R.failed(e.getLocalizedMessage());
|
|
|
+ }
|
|
|
+ return R.ok(resultMap);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 上传文件
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public R uploadFileAllUrlRealName(String fileName, String suffix, FileInputStream io) {
|
|
|
+
|
|
|
+ Date date = new Date();
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
|
+ String idStr = format.format(date);
|
|
|
+
|
|
|
+ fileName = String.format("%s-%s.%s", fileName, idStr, suffix);
|
|
|
+
|
|
|
+ Map<String, String> resultMap = new HashMap<>(4);
|
|
|
+ resultMap.put("bucketName", ossProperties.getBucketName());
|
|
|
+ resultMap.put("fileName", fileName);
|
|
|
+ resultMap.put("url", String.format("%s/admin/sys-file/%s/%s", upmsConfig.getClientUrl(), ossProperties.getBucketName(), fileName));
|
|
|
+
|
|
|
+ try {
|
|
|
+ minioTemplate.putObject(ossProperties.getBucketName(), fileName, io);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("上传失败", e);
|
|
|
+ return R.failed(e.getLocalizedMessage());
|
|
|
+ }
|
|
|
+ return R.ok(resultMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 读取文件
|
|
|
+ *
|
|
|
+ * @param bucket
|
|
|
+ * @param fileName
|
|
|
+ * @param response
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void getFile(String bucket, String fileName, HttpServletResponse response) {
|
|
|
+ try (InputStream inputStream = minioTemplate.getObject(bucket, fileName)) {
|
|
|
+ response.setContentType("application/octet-stream; charset=UTF-8");
|
|
|
+ IoUtil.copy(inputStream, response.getOutputStream());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("文件读取异常: {}", e.getLocalizedMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除文件
|
|
|
+ *
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @SneakyThrows
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean deleteFile(Long id) {
|
|
|
+ SysFile file = this.getById(id);
|
|
|
+ minioTemplate.removeObject(ossProperties.getBucketName(), file.getFileName());
|
|
|
+ return this.removeById(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 文件管理数据记录,收集管理追踪文件
|
|
|
+ *
|
|
|
+ * @param file 上传文件格式
|
|
|
+ * @param fileName 文件名
|
|
|
+ */
|
|
|
+ private SysFile fileLog(MultipartFile file, String fileName) {
|
|
|
+ SysFile sysFile = new SysFile();
|
|
|
+ // 原文件名
|
|
|
+ String original = file.getOriginalFilename();
|
|
|
+ sysFile.setFileName(fileName);
|
|
|
+ sysFile.setOriginal(original);
|
|
|
+ sysFile.setFileSize(file.getSize());
|
|
|
+ sysFile.setType(FileUtil.extName(original));
|
|
|
+ sysFile.setBucketName(ossProperties.getBucketName());
|
|
|
+ if (null != SecurityUtils.getUser()) {
|
|
|
+ sysFile.setCreateUser(SecurityUtils.getUser().getUsername());
|
|
|
+ }
|
|
|
+ this.save(sysFile);
|
|
|
+ return sysFile;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String uploadImgByByte(InputStream inputStream) {
|
|
|
+ String fileName = IdUtil.simpleUUID() + StrUtil.DOT + ".jpg";
|
|
|
+ Map<String, String> resultMap = new HashMap<>(4);
|
|
|
+ resultMap.put("bucketName", ossProperties.getBucketName());
|
|
|
+ resultMap.put("fileName", fileName);
|
|
|
+ resultMap.put("url", String.format("/admin/sys-file/%s/%s", ossProperties.getBucketName(), fileName));
|
|
|
+
|
|
|
+ try {
|
|
|
+ minioTemplate.putObject(ossProperties.getBucketName(), fileName, inputStream);
|
|
|
+ // 文件管理数据记录,收集管理追踪文件
|
|
|
+ //fileLog(file, fileName);
|
|
|
+ return String.format("/admin/sys-file/%s/%s", ossProperties.getBucketName(), fileName);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("上传失败", e);
|
|
|
+ }
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
|
|
|
}
|