浏览代码

feat: Zhurui 更新代码

Leonezhurui 4 年之前
父节点
当前提交
e876dd548d

+ 15 - 6
src/main/java/com/njuzr/seecoderfiles/controller/FileController.java

@@ -29,20 +29,29 @@ public class FileController {
 
     /**
      * 上传文件
-     * @param file
+     * @param file 文件流
+     * @return 格式化返回
      */
     @PostMapping
     public MyResponse uploadFile(MultipartFile file){
         return MyResponse.ok(fileService.uploadBokFile(file));
     }
 
+
     /**
-     * 删除
-     * @param bokFileName
+     * 删除文件
+     * @param fileName 文件名
+     * @return 格式化返回
      */
-    @DeleteMapping("/{bokFileName}")
-    public void deleteBokFile(@PathVariable String bokFileName) {
-        fileService.deleteBokFile(bokFileName);
+    @DeleteMapping
+    public MyResponse deleteFile(@RequestParam String fileName) {
+        try {
+            fileService.deleteFile(fileName);
+            return MyResponse.ok("删除文件成功");
+        }
+        catch (Exception e){
+            return MyResponse.error(e.getMessage());
+        }
     }
 
 }

+ 1 - 1
src/main/java/com/njuzr/seecoderfiles/service/FileService.java

@@ -11,7 +11,7 @@ import org.springframework.web.multipart.MultipartFile;
 public interface FileService {
     String uploadBokFile(MultipartFile file);
 
-    void deleteBokFile(String bokFileName);
+    void deleteFile(String bokFileName);
 
     void createOSSBucket(String bucketName);
 }

+ 4 - 3
src/main/java/com/njuzr/seecoderfiles/service/serviceImpl/FileServiceImpl.java

@@ -32,15 +32,16 @@ public class FileServiceImpl implements FileService {
         System.out.println(fileName);
         try{
             ossUtils.upload(fileName, file.getInputStream());
-            return "https://" +bucketName+"."+endpoint+"/"+fileName;
+            //如果正确,返回URl前缀、文件名的拼接
+            return ossUtils.getUrlPrefix()+file.getOriginalFilename();
         }catch (Exception e){
             e.getStackTrace();
         }
         return null;
     }
 
-    public void deleteBokFile(String bokFileName){
-        ossUtils.delete(bokFileName);
+    public void deleteFile(String fileName){
+        ossUtils.delete(fileName);
     }
 
     public void createOSSBucket(String bucketName){

+ 38 - 24
src/main/java/com/njuzr/seecoderfiles/util/OSSUtils.java

@@ -8,6 +8,7 @@ import com.aliyun.oss.model.Bucket;
 import com.aliyun.oss.model.PutObjectRequest;
 import com.njuzr.seecoderfiles.exception.MyServiceException;
 import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
@@ -23,6 +24,7 @@ import java.util.Date;
  */
 
 @Component
+@Slf4j
 @Data
 public class OSSUtils {
     @Value("${aliyun.oss.endpoint}")
@@ -37,13 +39,16 @@ public class OSSUtils {
     @Value("${aliyun.oss.bucketName}")
     private String bucketName;
 
+    @Value("${aliyun.oss.urlPrefix}")
+    private String urlPrefix;
+
     private long objectUrlLivingSeconds;
     private String objectUrlCacheName;
 
     /**
-     * 上传文件
-     * @param objectName
-     * @param inputStream
+     * 上传文件,一般是学生的图片
+     * @param objectName 文件名
+     * @param inputStream 文件输入流
      */
     public void upload(String objectName, InputStream inputStream) {
         OSS ossClient = getOss();
@@ -60,20 +65,21 @@ public class OSSUtils {
     }
 
     /**
-     * 获得上传文件的暂时性url
-     * @param objectName
-     * @return
+     * 异步删除上传的文件
+     * @param objectName 文件名
      */
-    public String getUrl(String objectName) {
+    @Async
+    public void delete(String objectName) {
         OSS ossClient = getOss();
-        Date expiration = new Date(System.currentTimeMillis() + 1200 * 1000);
         try {
-
-            URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
-            String objectUrl = url.toString();
-            return objectUrl;
+            boolean exist = ossClient.doesObjectExist(bucketName, objectName);
+            if(!exist) { //判断文件是否存在,如果不判断,不会被捕捉到异常
+                log.error(objectName+"不存在");
+                throw new MyServiceException("500", "文件不存在");
+            }
+            ossClient.deleteObject(bucketName, objectName);
         } catch (OSSException | ClientException e) {
-            throw new MyServiceException("500", "获取文件链接失败");
+            throw new MyServiceException("500", "文件删除失败");
         } finally {
             if (ossClient != null) {
                 ossClient.shutdown();
@@ -81,12 +87,20 @@ public class OSSUtils {
         }
     }
 
-    public void copy(String sourceObjectName, String destinationObjectName) {
+    /**
+     * 设置时间戳,获得临时图片URL
+     * @param objectName 文件名
+     * @return 图片临时URL
+     */
+    public String getUrl(String objectName) {
         OSS ossClient = getOss();
+        Date expiration = new Date(System.currentTimeMillis() + 1200 * 1000);
         try {
-            ossClient.copyObject(bucketName, sourceObjectName, bucketName, destinationObjectName);
+
+            URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
+            return url.toString();
         } catch (OSSException | ClientException e) {
-            throw new MyServiceException("501", "文件复制失败");
+            throw new MyServiceException("500", "获取文件链接失败");
         } finally {
             if (ossClient != null) {
                 ossClient.shutdown();
@@ -95,16 +109,16 @@ public class OSSUtils {
     }
 
     /**
-     * 异步删除上传的文件
-     * @param objectName
+     * 复制文件
+     * @param sourceObjectName 原文件名
+     * @param destinationObjectName 目标文件名
      */
-    @Async
-    public void delete(String objectName) {
+    public void copy(String sourceObjectName, String destinationObjectName) {
         OSS ossClient = getOss();
         try {
-            ossClient.deleteObject(bucketName, objectName);
+            ossClient.copyObject(bucketName, sourceObjectName, bucketName, destinationObjectName);
         } catch (OSSException | ClientException e) {
-            throw new MyServiceException("500", "文件删除失败");
+            throw new MyServiceException("501", "文件复制失败");
         } finally {
             if (ossClient != null) {
                 ossClient.shutdown();
@@ -114,7 +128,7 @@ public class OSSUtils {
 
     /**
      * 创建新的bucket
-     * @param bucketName
+     * @param bucketName bucket名称
      */
     public void createBucket(String bucketName){
         OSS ossClient = getOss();
@@ -133,7 +147,7 @@ public class OSSUtils {
 
     /**
      * 私有方法,获得OSS对象
-     * @return
+     * @return OSS对象
      */
     private OSS getOss() {
         return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

+ 12 - 12
src/main/resources/application.yml

@@ -1,15 +1,15 @@
 
-aliyun:
-  oss:
-    endpoint: oss-cn-shanghai.aliyuncs.com
-    accessKeyId: LTAI5t5ZwNZ6a4ptUXuiy7of
-    accessKeySecret: zC4VEHInTiGDNWGakVvkUPrZSzS1P2
-    bucketName: seec-homework
-
 #aliyun:
 #  oss:
-#    endpoint: oss-cn-beijing.aliyuncs.com
-#    accessKeyId: LTAI5tPEZTkNwy8iUCABeLPt
-#    accessKeySecret: ESXe7PD0EdAxLbrBfmyjXbl0rJwIRg
-#    bucketName: springbasic
-#    urlPrefix: https://springbasic.oss-cn-beijing.aliyuncs.com/
+#    endpoint: oss-cn-shanghai.aliyuncs.com
+#    accessKeyId: LTAI5t5ZwNZ6a4ptUXuiy7of
+#    accessKeySecret: zC4VEHInTiGDNWGakVvkUPrZSzS1P2
+#    bucketName: seec-homework
+
+aliyun:
+  oss:
+    endpoint: oss-cn-beijing.aliyuncs.com
+    accessKeyId: LTAI5tPEZTkNwy8iUCABeLPt
+    accessKeySecret: ESXe7PD0EdAxLbrBfmyjXbl0rJwIRg
+    bucketName: springbasic
+    urlPrefix: https://springbasic.oss-cn-beijing.aliyuncs.com/