From 336b1ee18a1d1ff4230e8edb7faa43e3b5ef1ffc Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 08 九月 2023 08:50:35 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/crm/common/service/OssService.java |  147 +++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 130 insertions(+), 17 deletions(-)

diff --git a/src/main/java/com/zy/crm/common/service/OssService.java b/src/main/java/com/zy/crm/common/service/OssService.java
index f7bd76f..1472c11 100644
--- a/src/main/java/com/zy/crm/common/service/OssService.java
+++ b/src/main/java/com/zy/crm/common/service/OssService.java
@@ -3,6 +3,8 @@
 import com.aliyun.oss.OSSClient;
 import com.aliyun.oss.model.OSSObject;
 import com.aliyun.oss.model.ObjectMetadata;
+import com.aliyun.oss.model.PutObjectRequest;
+import com.aliyun.oss.model.PutObjectResult;
 import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
 import lombok.Data;
@@ -10,14 +12,19 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.InputStreamResource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
+import java.io.*;
 import java.net.URL;
+import java.nio.file.Path;
 import java.util.Date;
+import java.nio.file.StandardCopyOption;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 
 /**
  * 闃块噷浜慜SS鏈嶅姟绫�
@@ -50,6 +57,7 @@
      * 涓婁紶OSS鏂囦欢
      * @return the url
      */
+    @Deprecated
     public String upload(InputStream inputStream, String suffix){
         if(suffix.trim().equals("file")){
             suffix="jpg";
@@ -79,26 +87,131 @@
         throw new CoolException("500-涓婁紶澶辫触");
     }
 
-    public String upload(InputStream inputStream) {
-        return upload(inputStream, ".jpg");
-    }
-
-    /**
-     * 涓嬭浇OSS鏂囦欢
-     */
-    public void download(String name) {
+    @Deprecated
+    public String upload(InputStream inputStream, String suffix,String contentType){
+        if(suffix.trim().equals("file")){
+            suffix="jpg";
+        }
         OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret);
+        String name = "";
         try {
-            OSSObject ossObject = ossClient.getObject(bucket, name);
-            InputStream inputStream = ossObject.getObjectContent();
-            // do transfer
-            inputStream.close();
-            log.info("OSS鏂囦欢涓嬭浇鎴愬姛: {}", name);
+            if (!ossClient.doesBucketExist(bucket)) {
+                ossClient.createBucket(bucket);
+                log.info("鎮ㄧ殑Bucket涓嶅瓨鍦紝鍒涘缓Bucket锛歿}",bucket);
+            }
+            name = String.valueOf(snowflakeIdWorker.nextId()).concat(".").concat(suffix);
+            // 娣诲姞 ContentType
+            ObjectMetadata objectMetadata = new ObjectMetadata();
+//            objectMetadata.setContentType("image/jpg");
+            objectMetadata.setContentType(contentType);
+            ossClient.putObject(bucket, name, inputStream, objectMetadata);
+            Date expiration = new Date(new Date().getTime() + 3600L * 1000 * 24 * 365 * 100);
+            URL url = ossClient.generatePresignedUrl(bucket, name, expiration);
+            log.info("OSS鏂囦欢涓婁紶鎴愬姛: {}", name);
+//            return String.valueOf(url);
+            return "http://zhongyang-ftpserver.oss-cn-hangzhou.aliyuncs.com/"+name;
         } catch (Exception e){
             e.printStackTrace();
         } finally {
             ossClient.shutdown();
         }
+        throw new CoolException("500-涓婁紶澶辫触");
+    }
+
+    @Deprecated
+    public String upload(InputStream inputStream) {
+        return upload(inputStream, ".jpg");
+    }
+
+    /**
+     * 鏂囦欢涓婁紶
+     * @param filePath OSS璺緞
+     * @param file 鏂囦欢File
+     */
+    public boolean uploadFile(String filePath, File file) {
+        OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret);
+        // 鍒涘缓PutObjectRequest瀵硅薄銆�
+        PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, filePath, file);
+        // 涓婁紶鏂囦欢銆�
+        PutObjectResult result = ossClient.putObject(putObjectRequest);
+        return true;
+    }
+
+    /**
+     * 涓嬭浇鏂囦欢
+     * @param filePath OSS璺緞
+     */
+    public ResponseEntity<InputStreamResource> downloadFile(String filePath) throws IOException {
+        OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret);
+        OSSObject ossObject = ossClient.getObject(bucket, filePath);
+        InputStream inputStream = ossObject.getObjectContent();
+
+        // 鍒涘缓鍝嶅簲瀹炰綋锛屽皢杈撳嚭娴佷綔涓烘枃浠跺唴瀹硅繑鍥�
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
+        headers.setContentDispositionFormData("attachment", "output.docx");
+        InputStreamResource resource = new InputStreamResource(convertToByteArrayInputStream(inputStream));
+        return ResponseEntity.ok()
+                .headers(headers)
+                .body(resource);
+    }
+
+    public static ByteArrayInputStream convertToByteArrayInputStream(InputStream inputStream) throws IOException {
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        byte[] buffer = new byte[4096];
+        int bytesRead;
+        while ((bytesRead = inputStream.read(buffer)) != -1) {
+            outputStream.write(buffer, 0, bytesRead);
+        }
+        byte[] data = outputStream.toByteArray();
+        return new ByteArrayInputStream(data);
+    }
+
+    /**
+     * 涓嬭浇OSS鏂囦欢
+     */
+//    public void download(String name) {
+//        OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret);
+//        try {
+//            OSSObject ossObject = ossClient.getObject(bucket, name);
+//            InputStream inputStream = ossObject.getObjectContent();
+//            // do transfer
+//            inputStream.close();
+//            log.info("OSS鏂囦欢涓嬭浇鎴愬姛: {}", name);
+//        } catch (Exception e){
+//            e.printStackTrace();
+//        } finally {
+//            ossClient.shutdown();
+//        }
+//    }
+
+    @Deprecated
+    public String download(String name) {
+        OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret);
+        try {
+            OSSObject ossObject = ossClient.getObject(bucket, name);
+            InputStream inputStream = ossObject.getObjectContent();
+
+            // 鑾峰彇榛樿涓嬭浇鐩綍
+            String defaultDownloadDir = System.getProperty("user.home") + "/Downloads";
+
+            // 鍒涘缓鏂囦欢淇濆瓨璺緞
+            Path filePath = Paths.get(defaultDownloadDir, name);
+
+            // 灏嗚緭鍏ユ祦澶嶅埗鍒版枃浠�
+            Files.copy(inputStream, filePath, StandardCopyOption.REPLACE_EXISTING);
+
+            // 鍏抽棴杈撳叆娴�
+            inputStream.close();
+
+            log.info("OSS鏂囦欢涓嬭浇鎴愬姛锛屼繚瀛樿矾寰�: {}", filePath);
+            return ""+filePath;
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            ossClient.shutdown();
+        }
+        return "";
     }
 
     /**

--
Gitblit v1.9.1