package com.fdkankan.fusion.service.impl; import com.fdkankan.fusion.common.FilePath; import com.fdkankan.fusion.common.OssPath; import com.fdkankan.fusion.common.ResultCode; import com.fdkankan.fusion.common.enums.FileTypeEnum; import com.fdkankan.fusion.common.util.*; import com.fdkankan.fusion.common.util.LocalToOssUtil; import com.fdkankan.fusion.config.CacheUtil; import com.fdkankan.fusion.entity.CommonUpload; import com.fdkankan.fusion.exception.BusinessException; import com.fdkankan.fusion.service.ICommonUploadService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.language.Nysiis; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.File; import java.io.IOException; import java.net.URLEncoder; import java.nio.file.FileStore; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.LinkedHashSet; import java.util.UUID; import java.util.regex.Matcher; @Service @Slf4j public class UploadService { @Autowired LocalToOssUtil localToOssUtil; @Value("${upload.query-path}") private String queryPath; @Value("${spring.profiles.active}") private String environment; @Autowired ICommonUploadService commonUploadService; public String uploadFile(MultipartFile file, Integer videoFolderId) { if(file.isEmpty()){ throw new BusinessException(ResultCode.UPLOAD_FILE_NO_EXIST); } if(file.getSize()>10 * 1024 * 1024 * 100){ System.out.println(file.getSize()); throw new BusinessException(ResultCode.UPLOAD_FILE_TO_LONG); } FileWriterUtil.checkSpace(file.getSize(),1.1); //获取文件名 String fileName = file.getOriginalFilename(); if(StringUtils.isEmpty(fileName)){ throw new BusinessException(ResultCode.UPLOAD_FILE_NO_EXIST); } File localFile = null; try { //获取文件后缀名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); //重新生成文件名 fileName = UUID.randomUUID().toString().replace("-","") ; localFile = new File(String.format(FilePath.VIDEO_LOCAL_PATH,environment) +"/"+videoFolderId +"/"+fileName + suffixName ); if(!localFile.getParentFile().exists()){ localFile.getParentFile().mkdirs(); } file.transferTo(localFile); return localFile.getPath(); }catch (Exception e){ e.printStackTrace(); } return null; } public String uploadFile(MultipartFile file, Boolean toMedia) { if(file.isEmpty()){ throw new BusinessException(ResultCode.UPLOAD_FILE_NO_EXIST); } if(file.getSize()>10 * 1024 * 1024 * 100){ throw new BusinessException(ResultCode.UPLOAD_FILE_TO_LONG); } FileWriterUtil.checkSpace(file.getSize(),1.1); //获取文件名 String fileName = file.getOriginalFilename(); if(StringUtils.isEmpty(fileName)){ throw new BusinessException(ResultCode.UPLOAD_FILE_NO_EXIST); } File localFile = null; try { //获取文件后缀名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); //重新生成文件名 String uuid = UUID.randomUUID().toString().replace("-","") ; String ossPath = String.format(OssPath.MANAGE_FILE_PATH, uuid + suffixName); localFile = new File( CacheUtil.settingEntity.getProfilePath() + ossPath); if(!localFile.getParentFile().exists()){ localFile.getParentFile().mkdirs(); } file.transferTo(localFile); //localToOssUtil.uploadOss(localFile.getPath(),ossPath); String format = suffixName.replace(".", ""); FileTypeEnum fileTypeEnum = FileTypeEnum.getByType(format); if( toMedia){ commonUploadService.add(fileName.replace(suffixName, ""), MyFileUtils.replaceSeparator(CacheUtil.mapping + ossPath), String.valueOf(file.getSize()), uuid, fileTypeEnum, format,format,1,localFile.getParentFile().getPath(), null); } return MyFileUtils.replaceSeparator(CacheUtil.mapping + ossPath); }catch (Exception e){ log.info("upload-error:{}",e); throw new BusinessException(ResultCode.UPLOAD_ERROR.code,ResultCode.UPLOAD_ERROR.msg); } } public void deleteOssUrl(String path) { try { String replace = path.replace(queryPath, ""); localToOssUtil.delete(replace); }catch (Exception e){ e.printStackTrace(); } } }