diff --git a/file-common/pom.xml b/file-common/pom.xml index 434f716..da8a36b 100644 --- a/file-common/pom.xml +++ b/file-common/pom.xml @@ -43,28 +43,12 @@ jjwt 0.9.1 - - - - - - - - - - - com.github.tobato fastdfs-client 1.26.2 - - redis.clients - jedis - 3.0.1 - diff --git a/file-common/src/main/java/com/qiwenshare/common/exception/UploadException.java b/file-common/src/main/java/com/qiwenshare/common/exception/UploadException.java new file mode 100644 index 0000000..c83a7e1 --- /dev/null +++ b/file-common/src/main/java/com/qiwenshare/common/exception/UploadException.java @@ -0,0 +1,12 @@ +package com.qiwenshare.common.exception; + +public abstract class UploadException extends RuntimeException{ + + protected UploadException(String message) { + super(message); + } + + protected UploadException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/file-common/src/main/java/com/qiwenshare/common/exception/UploadGeneralException.java b/file-common/src/main/java/com/qiwenshare/common/exception/UploadGeneralException.java new file mode 100644 index 0000000..a974354 --- /dev/null +++ b/file-common/src/main/java/com/qiwenshare/common/exception/UploadGeneralException.java @@ -0,0 +1,16 @@ +package com.qiwenshare.common.exception; + +public class UploadGeneralException extends UploadException{ + + public UploadGeneralException(Throwable cause) { + super("上传出现了异常", cause); + } + + public UploadGeneralException(String message) { + super(message); + } + + public UploadGeneralException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/file-common/src/main/java/com/qiwenshare/common/upload/Uploader.java b/file-common/src/main/java/com/qiwenshare/common/upload/Uploader.java index 8b01901..b9615a0 100644 --- a/file-common/src/main/java/com/qiwenshare/common/upload/Uploader.java +++ b/file-common/src/main/java/com/qiwenshare/common/upload/Uploader.java @@ -27,26 +27,7 @@ public abstract class Uploader { protected StandardMultipartHttpServletRequest request = null; public abstract List upload(HttpServletRequest request); -// -// -// protected static TrackerServer trackerServer = null; -// -// protected static StorageServer storageServer = null; -// -// static { -// try { -// //String filePath = new ClassPathResource("fdfs_client.conf").getFile().getAbsolutePath();; -// Properties properties = new Properties(); -// properties.setProperty("tracker_server ", "121.89.222.103"); -// properties.setProperty("http.tracker_http_port", "8090"); -// ClientGlobal.initByProperties(properties); -// TrackerClient trackerClient = new TrackerClient(); -// trackerServer = trackerClient.getConnection(); -// storageServer = trackerClient.getStoreStorage(trackerServer); -// } catch (Exception e) { -// log.error("FastDFS Client Init Fail!",e); -// } -// } + /** * 根据字符串创建本地目录 并按照日期建立子目录返回 * diff --git a/file-common/src/main/java/com/qiwenshare/common/upload/product/AliyunOSSUploader.java b/file-common/src/main/java/com/qiwenshare/common/upload/product/AliyunOSSUploader.java index 9414f6d..8d9518d 100644 --- a/file-common/src/main/java/com/qiwenshare/common/upload/product/AliyunOSSUploader.java +++ b/file-common/src/main/java/com/qiwenshare/common/upload/product/AliyunOSSUploader.java @@ -6,6 +6,7 @@ import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.model.*; import com.qiwenshare.common.domain.AliyunOSS; import com.qiwenshare.common.domain.UploadFile; +import com.qiwenshare.common.exception.UploadGeneralException; import com.qiwenshare.common.upload.Uploader; import com.qiwenshare.common.util.FileUtil; import com.qiwenshare.common.util.PathUtil; @@ -63,38 +64,32 @@ public class AliyunOSSUploader extends Uploader { bucketName = aliyunOSS.getBucketName(); boolean isMultipart = ServletFileUpload.isMultipartContent(this.request); if (!isMultipart) { - UploadFile uploadFile = new UploadFile(); - uploadFile.setSuccess(0); - uploadFile.setMessage("未包含文件上传域"); - saveUploadFileList.add(uploadFile); - return saveUploadFileList; + throw new UploadGeneralException("未包含文件上传域"); +// UploadFile uploadFile = new UploadFile(); +// uploadFile.setSuccess(0); +// uploadFile.setMessage("未包含文件上传域"); +// saveUploadFileList.add(uploadFile); +// return saveUploadFileList; } DiskFileItemFactory dff = new DiskFileItemFactory();//1、创建工厂 String savePath = getSaveFilePath(); dff.setRepository(new File(savePath)); - try { - ServletFileUpload sfu = new ServletFileUpload(dff);//2、创建文件上传解析器 - sfu.setSizeMax(this.maxSize * 1024L); - sfu.setHeaderEncoding("utf-8");//3、解决文件名的中文乱码 - Iterator iter = this.request.getFileNames(); - while (iter.hasNext()) { + ServletFileUpload sfu = new ServletFileUpload(dff);//2、创建文件上传解析器 + sfu.setSizeMax(this.maxSize * 1024L); + sfu.setHeaderEncoding("utf-8");//3、解决文件名的中文乱码 + Iterator iter = this.request.getFileNames(); + while (iter.hasNext()) { - saveUploadFileList = doUpload(savePath, iter); - } - } catch (IOException e) { - UploadFile uploadFile = new UploadFile(); - uploadFile.setSuccess(1); - uploadFile.setMessage("未知错误"); - saveUploadFileList.add(uploadFile); - e.printStackTrace(); + saveUploadFileList = doUpload(savePath, iter); } + logger.info("结束上传"); return saveUploadFileList; } - private List doUpload(String savePath, Iterator iter) throws IOException { + private List doUpload(String savePath, Iterator iter) { OSS ossClient = getClient(); List saveUploadFileList = new ArrayList<>(); @@ -174,6 +169,7 @@ public class AliyunOSSUploader extends Uploader { } catch (Exception e) { logger.error("上传出错:" + e); + throw new UploadGeneralException(e); } uploadFile.setIsOSS(1); diff --git a/file-common/src/main/java/com/qiwenshare/common/upload/product/ChunkUploader.java b/file-common/src/main/java/com/qiwenshare/common/upload/product/ChunkUploader.java index 36efb75..6e530dd 100644 --- a/file-common/src/main/java/com/qiwenshare/common/upload/product/ChunkUploader.java +++ b/file-common/src/main/java/com/qiwenshare/common/upload/product/ChunkUploader.java @@ -2,6 +2,7 @@ package com.qiwenshare.common.upload.product; import com.qiwenshare.common.cbb.NotSameFileExpection; import com.qiwenshare.common.domain.UploadFile; +import com.qiwenshare.common.exception.UploadGeneralException; import com.qiwenshare.common.operation.ImageOperation; import com.qiwenshare.common.upload.Uploader; import com.qiwenshare.common.util.FileUtil; @@ -42,11 +43,12 @@ public class ChunkUploader extends Uploader { this.request = (StandardMultipartHttpServletRequest) httpServletRequest; boolean isMultipart = ServletFileUpload.isMultipartContent(this.request); if (!isMultipart) { - UploadFile uploadFile = new UploadFile(); - uploadFile.setSuccess(0); - uploadFile.setMessage("未包含文件上传域"); - saveUploadFileList.add(uploadFile); - return saveUploadFileList; + throw new UploadGeneralException("未包含文件上传域"); +// UploadFile uploadFile = new UploadFile(); +// uploadFile.setSuccess(0); +// uploadFile.setMessage("未包含文件上传域"); +// saveUploadFileList.add(uploadFile); +// return saveUploadFileList; } DiskFileItemFactory dff = new DiskFileItemFactory();//1、创建工厂 String savePath = getSaveFilePath(); @@ -61,11 +63,12 @@ public class ChunkUploader extends Uploader { saveUploadFileList = doUpload(savePath, iter); } } catch (IOException e) { - UploadFile uploadFile = new UploadFile(); - uploadFile.setSuccess(1); - uploadFile.setMessage("未知错误"); - saveUploadFileList.add(uploadFile); - e.printStackTrace(); +// UploadFile uploadFile = new UploadFile(); +// uploadFile.setSuccess(1); +// uploadFile.setMessage("未知错误"); +// saveUploadFileList.add(uploadFile); +// e.printStackTrace(); + throw new UploadGeneralException("未包含文件上传域"); } catch (NotSameFileExpection notSameFileExpection) { notSameFileExpection.printStackTrace(); } diff --git a/file-common/src/main/java/com/qiwenshare/common/upload/product/FastDFSUploader.java b/file-common/src/main/java/com/qiwenshare/common/upload/product/FastDFSUploader.java index af5c5cd..fc2a838 100644 --- a/file-common/src/main/java/com/qiwenshare/common/upload/product/FastDFSUploader.java +++ b/file-common/src/main/java/com/qiwenshare/common/upload/product/FastDFSUploader.java @@ -3,6 +3,7 @@ package com.qiwenshare.common.upload.product; import com.github.tobato.fastdfs.domain.StorePath; import com.github.tobato.fastdfs.service.AppendFileStorageClient; import com.qiwenshare.common.domain.UploadFile; +import com.qiwenshare.common.exception.UploadGeneralException; import com.qiwenshare.common.upload.Uploader; import com.qiwenshare.common.util.FileUtil; import com.qiwenshare.common.util.PathUtil; @@ -50,11 +51,12 @@ public class FastDFSUploader extends Uploader { boolean isMultipart = ServletFileUpload.isMultipartContent(this.request); if (!isMultipart) { - UploadFile uploadFile = new UploadFile(); - uploadFile.setSuccess(0); - uploadFile.setMessage("未包含文件上传域"); - saveUploadFileList.add(uploadFile); - return saveUploadFileList; + throw new UploadGeneralException("未包含文件上传域"); +// UploadFile uploadFile = new UploadFile(); +// uploadFile.setSuccess(0); +// uploadFile.setMessage("未包含文件上传域"); +// saveUploadFileList.add(uploadFile); +// return saveUploadFileList; } DiskFileItemFactory dff = new DiskFileItemFactory();//1、创建工厂 String savePath = getSaveFilePath(); @@ -69,12 +71,13 @@ public class FastDFSUploader extends Uploader { saveUploadFileList = doUpload(savePath, iter); } - } catch (IOException e) { - UploadFile uploadFile = new UploadFile(); - uploadFile.setSuccess(1); - uploadFile.setMessage("未知错误"); - saveUploadFileList.add(uploadFile); - e.printStackTrace(); + } catch (Exception e) { + throw new UploadGeneralException(e); +// UploadFile uploadFile = new UploadFile(); +// uploadFile.setSuccess(1); +// uploadFile.setMessage("未知错误"); +// saveUploadFileList.add(uploadFile); +// e.printStackTrace(); } log.info("结束上传"); @@ -83,16 +86,14 @@ public class FastDFSUploader extends Uploader { - private List doUpload(String savePath, Iterator iter) throws IOException{ + private List doUpload(String savePath, Iterator iter){ List saveUploadFileList = new ArrayList<>(); try { MultipartFile multipartfile = this.request.getFile(iter.next()); - boolean uploadResult = uploadFileChunk(multipartfile); - if (!uploadResult) { + uploadFileChunk(multipartfile); - } String timeStampName = getTimeStampName(); String originalName = multipartfile.getOriginalFilename(); @@ -122,7 +123,8 @@ public class FastDFSUploader extends Uploader { } } catch (Exception e) { - log.error("上传出错:" + e); + throw new UploadGeneralException(e); +// log.error("上传出错:" + e); } uploadFile.setIsOSS(1); @@ -132,7 +134,7 @@ public class FastDFSUploader extends Uploader { return saveUploadFileList; } - public boolean uploadFileChunk(MultipartFile multipartFile) { + public void uploadFileChunk(MultipartFile multipartFile) { // 存储在fastdfs不带组的路径 // String noGroupPath = ""; @@ -150,7 +152,8 @@ public class FastDFSUploader extends Uploader { // return false; // } if (lock != null && lock) { - return false; + throw new UploadGeneralException("请求块锁失败"); + //return false; } LOCK_MAP.put(uploadFile.getIdentifier(), true); // 写入锁的当前拥有者 @@ -167,10 +170,12 @@ public class FastDFSUploader extends Uploader { //此段代码保证顺序,如果满足条件则返回失败 if (uploadFile.getChunkNumber() < currentChunkInRedis) { log.info("当前文件块已上传"); - return false; + throw new UploadGeneralException("当前文件块已上传"); +// return false; } else if (uploadFile.getChunkNumber() > currentChunkInRedis) { log.info("当前文件块需要等待上传,稍后请重试"); - return false; + throw new UploadGeneralException("当前文件块需要等待上传,稍后请重试"); +// return false; } log.info("***********开始上传第{}块**********", uploadFile.getChunkNumber()); @@ -190,12 +195,14 @@ public class FastDFSUploader extends Uploader { if (storePath == null) { CURRENT_UPLOAD_CHUNK_NUMBER.put(uploadFile.getIdentifier(), uploadFile.getChunkNumber()); log.info("获取远程文件路径出错"); - return false; + throw new UploadGeneralException("获取远程文件路径出错"); +// return false; } } catch (Exception e) { CURRENT_UPLOAD_CHUNK_NUMBER.put(uploadFile.getIdentifier(), uploadFile.getChunkNumber()); log.error("初次上传远程文件出错", e); - return false; + throw new UploadGeneralException("初次上传远程文件出错", e); +// return false; } STORE_PATH.put(uploadFile.getIdentifier(), storePath.getPath()); @@ -207,7 +214,8 @@ public class FastDFSUploader extends Uploader { if (path == null) { log.error("无法获取已上传服务器文件地址"); CURRENT_UPLOAD_CHUNK_NUMBER.put(uploadFile.getIdentifier(), uploadFile.getChunkNumber()); - return false; + throw new UploadGeneralException("无法获取已上传服务器文件地址"); +// return false; } try { Long alreadySize = UPLOADED_SIZE.get(uploadFile.getIdentifier()); @@ -220,12 +228,14 @@ public class FastDFSUploader extends Uploader { } catch (Exception e) { CURRENT_UPLOAD_CHUNK_NUMBER.put(uploadFile.getIdentifier(), uploadFile.getChunkNumber()); log.error("更新远程文件出错", e); - return false; + throw new UploadGeneralException("更新远程文件出错", e); +// return false; } } } catch (Exception e) { log.error("上传文件错误", e); - return false; + throw new UploadGeneralException("上传文件错误", e); +// return false; } } finally { // 锁的当前拥有者才能释放块上传锁 @@ -235,6 +245,6 @@ public class FastDFSUploader extends Uploader { } } log.info("***********第{}块上传成功**********", uploadFile.getChunkNumber()); - return true; +// return true; } } diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/TaskController.java b/file-web/src/main/java/com/qiwenshare/file/controller/TaskController.java index f3cc6f7..81a8d78 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/TaskController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/TaskController.java @@ -28,7 +28,7 @@ public class TaskController { @Scheduled(cron = "0 0/1 * * * ?") public void deleteFile() { - log.info("111112"); + LambdaQueryWrapper fileBeanLambdaQueryWrapper = new LambdaQueryWrapper<>(); fileBeanLambdaQueryWrapper.eq(FileBean::getPointCount, 0); @@ -39,8 +39,7 @@ public class TaskController { fileService.deleteLocalFile(fileBean); fileService.removeById(fileBean.getFileId()); } - fileService.remove(fileBeanLambdaQueryWrapper); +// fileService.remove(fileBeanLambdaQueryWrapper); - log.info("11111"); } }