From 7ef4892f9f24f941aca37e6b3991b808a0aca619 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期五, 08 九月 2023 11:16:35 +0800
Subject: [PATCH] 优化

---
 ycl-common/src/main/java/com/ycl/service/oss/impl/OssServiceImpl.java |   93 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 89 insertions(+), 4 deletions(-)

diff --git a/ycl-common/src/main/java/com/ycl/service/oss/impl/OssServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/oss/impl/OssServiceImpl.java
index 47a1246..e9fea7d 100644
--- a/ycl-common/src/main/java/com/ycl/service/oss/impl/OssServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/oss/impl/OssServiceImpl.java
@@ -1,20 +1,34 @@
 package com.ycl.service.oss.impl;
 
+import com.aliyun.oss.ClientBuilderConfiguration;
 import com.aliyun.oss.OSS;
 import com.aliyun.oss.OSSClientBuilder;
+import com.aliyun.oss.common.comm.Protocol;
 import com.aliyun.oss.model.ObjectMetadata;
 import com.ycl.service.oss.OssService;
 import com.ycl.utils.ConstantPropertiesUtils;
+import com.ycl.utils.common.RandomUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Date;
+import java.util.UUID;
 
 @Service
 public class OssServiceImpl implements OssService {
     @Override
     public String uploadImages(MultipartFile file) {
+        if (file == null) {
+            return "涓婁紶鏂囦欢涓虹┖";
+        }
         String endpoint = ConstantPropertiesUtils.END_POINT;
         String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
         String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
@@ -25,24 +39,43 @@
         // 涓婁紶鏂囦欢娴�
         try {
             // 鑾峰彇鏂囦欢鐨勫悕绉�
-            String fileName = file.getOriginalFilename();
+            String fileName = "sczf/" + file.getOriginalFilename();
             ObjectMetadata objectMetadata = new ObjectMetadata();
             objectMetadata.setContentType(getcontentType(fileName.substring(fileName.lastIndexOf("."))));
             // 璋冪敤oss鐨勬柟娉曞疄鐜伴暱浼�
             // 绗竴涓弬鏁� bucketName
             // 绗簩涓弬鏁� 涓婁紶鍒皁ss鐨勬枃浠惰矾寰勫拰鏂囦欢鍚嶇О
-            ossClient.putObject(bucketName, fileName, new ByteArrayInputStream(file.getBytes()),objectMetadata);
+            ossClient.putObject(bucketName, fileName, new ByteArrayInputStream(file.getBytes()), objectMetadata);
             // 鍏抽棴OSSClient銆�
             ossClient.shutdown();
             // 鎶婁笂浼犵殑鏂囦欢璺緞杩斿洖 锛堟墜鍔ㄦ嫾鎺ワ級
             // 杩欓噷璁剧疆鍥剧墖鏈夋晥鏃堕棿 鎴戣缃簡30骞�
-            Date expiration = new Date(System.currentTimeMillis() + 946080000 * 1000);
+            Date expiration = new Date(System.currentTimeMillis() + (long) 946080000 * 1000);
             String url = ossClient.generatePresignedUrl(bucketName, fileName, expiration).toString();
+
             return url;
         } catch (Exception e) {
-            e.printStackTrace();
+            System.out.println("uploadImages涓婁紶鍥剧墖澶辫触锛�");
+            // e.printStackTrace();
             return null;
         }
+    }
+
+    private byte[] readInputStream(InputStream inStream) throws Exception {
+        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
+        //鍒涘缓涓�涓狟uffer瀛楃涓�
+        byte[] buffer = new byte[1024];
+        //姣忔璇诲彇鐨勫瓧绗︿覆闀垮害锛屽鏋滀负-1锛屼唬琛ㄥ叏閮ㄨ鍙栧畬姣�
+        int len = 0;
+        //浣跨敤涓�涓緭鍏ユ祦浠巄uffer閲屾妸鏁版嵁璇诲彇鍑烘潵
+        while ((len = inStream.read(buffer)) != -1) {
+            //鐢ㄨ緭鍑烘祦寰�buffer閲屽啓鍏ユ暟鎹紝涓棿鍙傛暟浠h〃浠庡摢涓綅缃紑濮嬭锛宭en浠h〃璇诲彇鐨勯暱搴�
+            outStream.write(buffer, 0, len);
+        }
+        //鍏抽棴杈撳叆娴�
+        inStream.close();
+        //鎶妎utStream閲岀殑鏁版嵁鍐欏叆鍐呭瓨
+        return outStream.toByteArray();
     }
 
     @Override
@@ -62,7 +95,59 @@
         return true;
     }
 
+    @Override
+    public String uploadImages(InputStream inputStream, String ext) {
+        String endpoint = ConstantPropertiesUtils.END_POINT;
+        String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
+        String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
+        String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
+
+        // 鍒涘缓OSSClient瀹炰緥銆�
+        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+        // 涓婁紶鏂囦欢娴�
+        try {
+            // 鑾峰彇鏂囦欢鐨勫悕绉�
+            LocalDate date = LocalDate.now();
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
+            String fileName = "sczf/" + date.format(formatter) + RandomUtils.generateRandomInt(8) + "." + ext;
+            System.out.println("鏂囦欢鍦板潃锛�" + fileName);
+            ObjectMetadata objectMetadata = new ObjectMetadata();
+            objectMetadata.setContentType(getcontentType(ext));
+            // 璋冪敤oss鐨勬柟娉曞疄鐜伴暱浼�
+            // 绗竴涓弬鏁� bucketName
+            // 绗簩涓弬鏁� 涓婁紶鍒皁ss鐨勬枃浠惰矾寰勫拰鏂囦欢鍚嶇О
+            ossClient.putObject(bucketName, fileName, inputStream, objectMetadata);
+            // 鍏抽棴OSSClient銆�
+            ossClient.shutdown();
+            // 鎶婁笂浼犵殑鏂囦欢璺緞杩斿洖 锛堟墜鍔ㄦ嫾鎺ワ級
+            // 杩欓噷璁剧疆鍥剧墖鏈夋晥鏃堕棿 鎴戣缃簡30骞�
+            Date expiration = new Date(System.currentTimeMillis() + (long) 946080000 * 1000);
+            String url = ossClient.generatePresignedUrl(bucketName, fileName, expiration).toString();
+            System.out.println("oss涓婁紶鎴愬姛锛�" + url);
+
+            // URL urlO = new URL(url);
+            // HttpURLConnection conn = (HttpURLConnection) urlO.openConnection();
+            // conn.setRequestMethod("GET");
+            // conn.setConnectTimeout(10 * 1000);
+            // conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
+            //
+            // InputStream inputStream2 = conn.getInputStream();// 閫氳繃杈撳叆娴佽幏鍙栧浘鐗囨暟鎹�
+            //
+            // byte[] data = readInputStream(inputStream2);
+            //
+            // System.out.println("鑾峰彇鍥剧墖鎴愬姛:" + url);
+            return url;
+        } catch (Exception e) {
+            System.out.println("oss寮傚父锛�" + e.getMessage());
+            // e.printStackTrace();
+            return this.uploadImages(inputStream, ext);
+        }
+    }
+
     public static String getcontentType(String FilenameExtension) {
+        if (FilenameExtension.equalsIgnoreCase(".mp4")||FilenameExtension.equalsIgnoreCase(".mov")) {
+            return "video/mp4";
+        }
         if (FilenameExtension.equalsIgnoreCase(".bmp")) {
             return "image/bmp";
         }

--
Gitblit v1.8.0