<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      阿里云對象存儲OSS之Java

      阿里云對象存儲OSS

      介紹

      • 阿里云對象存儲OSS是一款非常強大的云存儲服務——提供的海量、安全、低成本、高持久性的對象存儲服務,通過RESTful API提供HTTP接口。
      • 核心特性
        • 無限擴展:存儲空間和文件數量無上限。
        • 多存儲類型:提供標準、低頻訪問、歸檔、冷歸檔、深度冷歸檔等多種存儲類型,覆蓋從熱到冷的全部數據場景。
        • 高安全性:提供多種加密方式(服務器端/客戶端)、權限控制、WORM(一次寫入,多次讀取)特性,滿足合規要求。
        • 智能處理:內置圖片處理、視頻截幀等媒體處理功能。
      • 優勢
        • 穩定可靠:支持大規模場景。
        • ??成本優化??:按量付費,無最低消費,支持生命周期管理自動轉換存儲類型以節約成本。
        • ??簡單易用??:提供控制臺、命令行工具、圖形化工具及多種語言SDK,方便管理。
      • 應用場景
        • 網站/應用的動靜分離,存儲靜態資源(圖片、音視頻、文檔等)。
        • 靜態網站托管
        • 數據備份與歸檔,結合生命周期管理降低長期存儲成本。
        • 大數據分析AI的底層數據湖存儲。
      • 核心概念
        • 存儲空間:存儲文件(對象)的容器,名稱在OSS范圍內必須全局唯一。可設置其所在地域、訪問權限和存儲類型等屬性。
        • 對象/文件:這是OSS存儲數據的基本單元,由數據本身、元數據鍵key組成。鍵可理解為文件的唯一標識,可包含類似目錄結構的后綴(如 data/images/logo.jpg)來模擬文件夾層級
        • 地域:指OSS的數據中心所在的物理位置——用戶離地域越近訪問速度越快。
      • 使用方式控制臺命令行工具SDK圖形化桌面工具

      Java代碼

      • maven引入的aliyun-sdk-oss版本
      <dependency>
      	<groupId>com.aliyun.oss</groupId>
      	<artifactId>aliyun-sdk-oss</artifactId>
      	<version>3.11.2</version>
      </dependency>
      
      • 配置類
      import com.aliyun.oss.OSS;
      import com.aliyun.oss.OSSClientBuilder;
      import lombok.Data;
      import org.springframework.boot.context.properties.ConfigurationProperties;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      @Data
      @Configuration
      @ConfigurationProperties(prefix = "aliyun.oss")
      public class OSSConfig {
      
          private String endpoint;
          
          private String accessKeyId;
          
          private String accessKeySecret;
          
          private String bucketName;
      
          @Bean(destroyMethod = "shutdown")
          public OSS ossClient() {
              return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
          }
      }
      
      • 服務類
      import com.aliyun.oss.OSS;
      import com.aliyun.oss.model.GetObjectRequest;
      import com.aliyun.oss.model.OSSObject;
      import com.aliyun.oss.model.ObjectMetadata;
      import com.aliyun.oss.model.PutObjectRequest;
      import com.yyds.admin.config.OSSConfig;
      import lombok.RequiredArgsConstructor;
      import org.springframework.stereotype.Service;
      import org.springframework.web.multipart.MultipartFile;
      
      import java.io.File;
      import java.io.IOException;
      import java.io.InputStream;
      
      @Service
      @RequiredArgsConstructor
      public class OSSService {
      
          private final OSS ossClient;
      
          private final OSSConfig ossConfig;
          
          public static final String POINT = ".";
          
          /**
           * 上傳文件
           * 
           * @param file 文件
           * @param filePath 存放的路徑
           * @return 文件路徑
           */
          public String uploadFile(MultipartFile file, String filePath) {
              try {
                  ossClient.putObject(ossConfig.getBucketName(), filePath, file.getInputStream());
                  
                  /* 方式二:指定訪問文件時的打開方式
                       指定文件訪問時的默認打開方式——如pdf文件,使用阿里云oss提供的默認域名訪問文件時默認是下載,而不是預覽。
                      由于阿里云oss為自身安全考慮訪問所使用策略,如需默認打開是預覽,需要配置自己的域名進行訪問。
                      以下代碼使用自定義域名訪問時生效,使用阿里云oss提供的默認域名訪問文件時將失效——阿里云oss平臺策略優先級比代碼控制高。
                  PutObjectRequest request = new PutObjectRequest(ossConfig.getBucketName(), filePath, file.getInputStream());
                  // 創建元數據對象并設置關鍵屬性:Content-Type (MIME類型)、Content-Disposition
                  ObjectMetadata metadata = new ObjectMetadata();
                  // 1、設置訪問是預覽模式 inline
                  metadata.setContentDisposition("inline");
                  // 2、設置訪問是下載模式 attachment
                  metadata.setContentDisposition("attachment");
                  metadata.setContentType("application/pdf");
                  request.setMetadata(metadata);
                  ossClient.putObject(request);
                   */
                  
              } catch (IOException e) {
                  throw new RuntimeException(e.getMessage());
              }
              return "https://" + ossConfig.getBucketName() + POINT + ossConfig.getEndpoint() + File.separator + filePath;
          }
      
      
          /**
           * 下載文件 以字節數組形式返回 根據完整的path下載
           * @param filePath 下載文件路徑 如:https://guangzhou.aliyuncs.com/data/pdf/2025/10/7/2345.pdf
           * @return 字節數組
           */
          public byte[] downLoad(String filePath) {
              try {
                  OSSObject object = ossClient.getObject(new GetObjectRequest(ossConfig.getBucketName(), formatPath(filePath)));
                  InputStream stream = object.getObjectContent();
                  return stream.readAllBytes();
              } catch (Exception e) {
                  throw new RuntimeException(e.getMessage());
              }
          }
      
          /**
           * 指定路徑文件上傳
           * @param file 文件
           * @param filePath 指定路徑 如:http://guangzhou.aliyuncs.com/data/pdf/2025/10/7/2345.pdf
           * @return 完整文件路徑
           */
          public String uploadFileAttachPath(MultipartFile file, String filePath) {
              try {
                  ossClient.putObject(ossConfig.getBucketName(), formatPath(filePath), file.getInputStream());
              } catch (IOException e) {
                  throw new RuntimeException(e.getMessage());
              }
              return filePath;
          }
      
          /**
           * 刪除文件
           * @param filePath 文件路徑
           */
          public void deleteFile(String filePath) {
              try {
                  ossClient.deleteObject(ossConfig.getBucketName(), formatPath(filePath));
              } catch (Exception e) {
                  throw new RuntimeException(e.getMessage());
              }
          }
          
          /**
           * 根據路徑獲取不包含Bucket名稱在內的Object完整路徑:data/pdf/2025/10/7/2345.jpg
           * @param filePath 文件路徑
           */
          public String formatPath(String filePath) {
              String path = "https://" + ossConfig.getBucketName() + POINT + ossConfig.getEndpoint() + File.separator;
              return  filePath.replace(path, "");
          }
      }
      
      posted @ 2025-10-21 21:15  Soul-Q  閱讀(13)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国偷自产视频一区二区久| 东方四虎在线观看av| 亚洲AV日韩精品久久久久| 欧美人人妻人人澡人人尤物| 色狠狠综合天天综合综合| 欧美大胆老熟妇乱子伦视频| 日产精品久久久久久久| 免费无码va一区二区三区| 国产av一区二区麻豆熟女| 欧美特级午夜一区二区三区| 亚洲真人无码永久在线| 久久热在线视频精品视频| 少妇人妻偷人精品免费| 亚洲区小说区图片区qvod| 国产午夜精品亚洲精品国产| 中文字幕亚洲人妻系列| 成人性做爰aaa片免费看| 久久久精品2019中文字幕之3| 91精品久久一区二区三区| 精品国产午夜福利在线观看| 免费无码AV一区二区波多野结衣| 国产呦交精品免费视频| 一本本月无码-| 国产在线精品中文字幕| 国产亚洲精品久久久久婷婷图片 | 亚洲人成网线在线播放VA| 91中文字幕一区在线| 亚洲欧洲日产国码久在线| 亚洲男人天堂2021| 免费无码成人AV片在线| 国产精品推荐视频一区二区| 日日碰狠狠躁久久躁96avv| 年日韩激情国产自偷亚洲| 亚洲欧洲日韩国内精品| 深夜福利视频在线播放| av鲁丝一区鲁丝二区鲁丝三区| 国产欧美综合在线观看第十页| 海伦市| 国产鲁鲁视频在线观看| 国产精品自拍一二三四区| 狠狠cao日日穞夜夜穞av|