国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

springboot快速整合騰訊云COS對象存儲

這篇具有很好參考價值的文章主要介紹了springboot快速整合騰訊云COS對象存儲。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、導入相關依賴

<!--騰訊云COS-->
        <dependency>
            <groupId>com.tencentcloudapi</groupId>
            <artifactId>tencentcloud-sdk-java</artifactId>
            <version>3.0.1</version>
        </dependency>

        <dependency>
            <groupId>com.qcloud</groupId>
            <artifactId>cos_api</artifactId>
            <version>5.6.8</version>
        </dependency>

2、編寫配置類,獲取配置信息

創(chuàng)建配置類主要需要以下信息

騰訊云賬號秘鑰密碼秘鑰:用于創(chuàng)建COSClient鏈接對象,識別用戶身份信息

存儲桶區(qū)域:需要設置客戶端所屬區(qū)域Region

存儲桶名稱:創(chuàng)建請求時,需要告知上傳到哪個存儲桶下

存儲桶訪問路徑:用于拼裝上傳文件完整訪問路徑

我獲得的信息均寫在配置類中,這里使用?@Value?或者 @ConfigurationProperties?都可以,寫法就不多說,但是注意?@ConfigurationProperties 支持松散綁定,在識別讀取配置信息時,不區(qū)分大小寫,且會去掉中劃線-、下劃線_ (A-b_Obj→abobj→abObj),參考:SpringBoot松散綁定(寬松綁定)@ConfigurationProperties

import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.region.Region;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

/**
 * @author phf
 * @description @ConfigurationProperties 松散綁定(中劃線-、下劃線_ 都去掉,且不區(qū)分大小寫)
 */
@Component
@ConfigurationProperties(prefix = "cos")
@Data
public class CosConfig {
    /**
     * 騰訊云賬號秘鑰
     */
    private String secretId;
    /**
     * 密碼秘鑰
     */
    private String secretKey;
    /**
     * 存儲桶地區(qū)
     */
    private String region;
    /**
     * 存儲桶名稱
     */
    private String bucketName;
    /**
     * 存儲桶訪問路徑
     */
    private String path;

    /**
     * 初始化cos對象,配置相關配置信息
     */
    @Bean
    public COSClient cosClient(){
        // 1 初始化用戶身份信息(secretId, secretKey)。
        COSCredentials cred = new BasicCOSCredentials(this.secretId, this.secretKey);
        // 2 設置 bucket 的區(qū)域
        Region region = new Region(this.region);
        ClientConfig clientConfig = new ClientConfig(region);
        // 3 生成 cos 客戶端。
        COSClient cosClient = new COSClient(cred, clientConfig);
        return cosClient;
    }
}

配置信息獲取

(1)進入騰訊云對象存儲→創(chuàng)建存儲桶(有則跳過),獲取存儲桶名稱、區(qū)域、存儲桶訪問路徑
springboot快速整合騰訊云COS對象存儲,spring boot,騰訊云,python

(2)獲取騰訊云賬號秘鑰
springboot快速整合騰訊云COS對象存儲,spring boot,騰訊云,python

3、編寫邏輯層——實現(xiàn)上傳

我這里用了多文件上傳,單文件上傳,把數(shù)組和循環(huán)去掉即可

public interface ICosFileService {
    /**
     * 上傳
     * @param files
     * @return
     */
     RestApiResponse<String> upload(MultipartFile[] files);

    /**
     * 刪除
     * @param fileName
     * @return
     */
     RestApiResponse<Void> delete(String fileName);
}
@Slf4j
@Service
public class ICosFileServiceImpl implements ICosFileService {

    @Resource
    private COSClient cosClient;

    @Resource
    private CosConfig cosConfig;

    @Override
    @Transactional(rollbackFor = Exception.class)
    public RestApiResponse<String> upload(MultipartFile[] files) {
        RestApiResponse<String> response = RestApiResponse.success();
        String res = "";
        try {
            for (MultipartFile file : files) {
                String originalFileName = file.getOriginalFilename();
                // 獲得文件流
                InputStream inputStream = null;
                inputStream = file.getInputStream();

                // 設置文件路徑
                String filePath = getFilePath(originalFileName, "你的桶內文件路徑abc/def/test/");
                // 上傳文件
                String bucketName = cosConfig.getBucketName();
                ObjectMetadata objectMetadata = new ObjectMetadata();
                objectMetadata.setContentLength(file.getSize());
                objectMetadata.setContentType(file.getContentType());
                PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, filePath, inputStream, objectMetadata);
                cosClient.putObject(putObjectRequest);
                cosClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
                String url = cosConfig.getPath() + "/" + filePath;
                res += url + ",";
            }
            String paths = res.substring(0, res.length() - 1);
            response.setData(paths);
            return response;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            cosClient.shutdown();
        }
        return RestApiResponse.fail();
    }

    @Override
    public RestApiResponse<Void> delete(String fileName) {
        cosConfig.cosClient();
        // 文件桶內路徑
        String filePath = getDelFilePath(fileName, "你的桶內文件路徑abc/def/test/");
        cosClient.deleteObject(cosConfig.getBucketName(), filePath);
        return RestApiResponse.success();
    }

    /**
     * 生成文件路徑
     * @param originalFileName 原始文件名稱
     * @param folder 存儲路徑
     * @return
     */
    private String getFilePath(String originalFileName, String folder) {
        // 獲取后綴名
        String fileType = originalFileName.substring(originalFileName.lastIndexOf("."));
        // 以文件后綴來存儲在存儲桶中生成文件夾方便管理
        String filePath = folder + "/";
        // 去除文件后綴 替換所有特殊字符
        String fileStr = StrUtil.removeSuffix(originalFileName, fileType).replaceAll("[^0-9a-zA-Z\\u4e00-\\u9fa5]", "_");
        filePath += new DateTime().toString("yyyyMMddHHmmss") + "_" + fileStr + fileType;
        log.info("filePath:" + filePath);
        return filePath;
    }
    /**
     * 生成文件路徑
     * @param originalFileName 原始文件名稱
     * @param folder 存儲路徑
     * @return
     */
    private String getDelFilePath(String originalFileName, String folder) {
        // 獲取后綴名
        String fileType = originalFileName.substring(originalFileName.lastIndexOf("."));
        // 以文件后綴來存儲在存儲桶中生成文件夾方便管理
        String filePath = folder + "/";
        // 去除文件后綴 替換所有特殊字符
        String fileStr = StrUtil.removeSuffix(originalFileName, fileType).replaceAll("[^0-9a-zA-Z\\u4e00-\\u9fa5]", "_");
        filePath += fileStr + fileType;
        log.info("filePath:" + filePath);
        return filePath;
    }
}

?4、編寫Controller測試

@Api(tags = "cos文件操作")
@RestController
@RequestMapping("/cos")
public class ICosFileController {

    @Autowired
    private ICosFileService iCosFileService;

    @ApiOperation(value = "文件上傳", httpMethod = "POST")
    @PostMapping("/upload")
    public RestApiResponse<String> upload(@RequestParam("files") MultipartFile[] files) {
        RestApiResponse<String> result = iCosFileService.upload(files);
        return result;
    }

    @ApiOperation(value = "文件刪除", httpMethod = "POST")
    @PostMapping("/delete")
    public RestApiResponse<String> delete(@RequestParam("fileName") String fileName) {
        iCosFileService.delete(fileName);
        return RestApiResponse.success();
    }
}

springboot快速整合騰訊云COS對象存儲,spring boot,騰訊云,python

上傳成功,且返回完整信息

springboot快速整合騰訊云COS對象存儲,spring boot,騰訊云,python

springboot快速整合騰訊云COS對象存儲,spring boot,騰訊云,python

刪除時,保證刪除的文件名稱參數(shù)key,為桶內文件完整路徑即可,如果你的桶是app-bucket-name,文件含桶路徑是app-bucket-name/file1/file2/file.png,那桶內完整路徑就是file1/file2/file.png

    public RestApiResponse<Void> delete(String fileName) {
        cosConfig.cosClient();
        // 文件桶內路徑
        String filePath = getDelFilePath(fileName, "你的桶內文件路徑abc/def/test/");
        // 這里的第二個參數(shù),必須是桶內的完整路徑
        cosClient.deleteObject(cosConfig.getBucketName(), filePath);
        return RestApiResponse.success();
    }

springboot快速整合騰訊云COS對象存儲,spring boot,騰訊云,python

springboot快速整合騰訊云COS對象存儲,spring boot,騰訊云,python

5、問題:COSClient報錯連接池已關閉

之前自主調用了cosClient.shutdown,結果第二次上傳時,就拋出異常,其實它自己維護了一個線程池:對象存儲 Java SDK 常見問題-SDK 文檔-文檔中心-騰訊云

springboot快速整合騰訊云COS對象存儲,spring boot,騰訊云,python

?

6、完整代碼

https://download.csdn.net/download/huofuman960209/88085303文章來源地址http://www.zghlxwxcb.cn/news/detail-609428.html

到了這里,關于springboot快速整合騰訊云COS對象存儲的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【2023新教程】樹莓派定時自動拍照并上傳騰訊云對象存儲COS

    僅適用于 Release date: May 3rd 2023、Debian version: 11 (bullseye) 這個樹莓派OS版本,其他版本不保證有效。 首先使用如下命令,查看自己樹莓派的架構。 結果如下: 如果紅圈處顯示為 aarch64 ,使用命令 sudo nano /etc/apt/sources.list ,注釋掉里面的所有內容,加入以下內容: 然后保存。

    2024年02月12日
    瀏覽(29)
  • 【golang】go獲取騰訊云cos對象存儲 并轉為base64字符串輸出

    需要引入騰訊云cos的sdk https://github.com/tencentyun/cos-go-sdk-v5 配置yaml如下: go代碼編寫如下:

    2024年02月11日
    瀏覽(28)
  • springboot集成COS對象存儲

    springboot集成COS對象存儲

    新建密鑰(后面配置要用到) 此處使用工具類進行基本屬性配置,也可選擇在yml中配置

    2024年01月22日
    瀏覽(25)
  • 騰訊云國際-如何使用對象存儲COS在 CKafka 控制臺創(chuàng)建數(shù)據(jù)異步拉取任務?騰訊云代充

    騰訊云國際-如何使用對象存儲COS在 CKafka 控制臺創(chuàng)建數(shù)據(jù)異步拉取任務?騰訊云代充

    Datahub 支持接入各種數(shù)據(jù)源產生的不同類型的數(shù)據(jù),統(tǒng)一管理,再分發(fā)給下游的離線/在線處理平臺,構建清晰的數(shù)據(jù)通道。 本文以 COS 數(shù)據(jù)為例介紹如何在 CKafka 控制臺創(chuàng)建數(shù)據(jù)異步拉取任務,并對任務進行修改配置,幫助用戶更好地了解數(shù)據(jù)接入功能。 關聯(lián)unirech注冊騰訊云

    2024年02月08日
    瀏覽(29)
  • 騰訊云COS存儲是什么_騰訊云COS有什么用?

    由于這是給新手寫的東西,就盡量整得簡單易懂些吧。 作為國內第二大的云服務廠商,安全性,可靠性這些東西就不用過多做介紹了(這里并非說他絕對安全,而是比那些小平臺的安全性高N個級別) 騰訊云COS與隔壁阿里云的OSS都是提供對象存儲的服務,(即文件存儲)。比

    2024年02月11日
    瀏覽(26)
  • 騰訊云存儲COS

    騰訊云存儲COS

    對象存儲(Cloud Object Storage,COS)是由騰訊云推出的無目錄層次結構、無數(shù)據(jù)格式限制,可容納海量數(shù)據(jù)且支持 HTTP/HTTPS 協(xié)議訪問的分布式存儲服務。騰訊云 COS 的存儲桶空間無容量上限,無需分區(qū)管理,適用于 CDN 數(shù)據(jù)分發(fā)、數(shù)據(jù)萬象處理或大數(shù)據(jù)計算與分析的數(shù)據(jù)湖等多種

    2024年02月12日
    瀏覽(21)
  • 騰訊云COS的快速接入

    騰訊云COS的快速接入

    最近在研究一個剪貼板粘貼工具,實現(xiàn)粘貼圖片,返回可訪問的地址,這個在我的嗶哩嗶哩上有出一期視頻??。但是,我發(fā)現(xiàn)部分博客平臺不能正常的轉載我的圖片鏈接,于是研究了一下騰訊云的COS(阿里的叫OSS,最開始我還不知道騰訊云的叫COS??),想著其它平臺應該可

    2024年02月13日
    瀏覽(17)
  • [php-cos]ThinkPHP項目集成騰訊云儲存對象COS

    [php-cos]ThinkPHP項目集成騰訊云儲存對象COS

    Cos技術文檔 1、安裝phpSdk 通過composer的方式安裝。 1.1 在composer.json中添加 qcloud/cos-sdk-v5: =2.0 將composer.lock刪除,然后運行composer install 就安裝成功了。 查看vendor中的是否存在qcloudcos-sdk-v5,安裝包中有使用的例子:sample文件夾中。 2、添加配置文件 3、編寫cos工具類 測試: pos

    2024年02月15日
    瀏覽(17)
  • SpringBoot整合阿里云OSS對象存儲

    SpringBoot整合阿里云OSS對象存儲

    阿里云對象存儲服務(Object Storage Service,簡稱OSS)為您提供基于網(wǎng)絡的數(shù)據(jù)存取服務。使用OSS,您可以通過網(wǎng)絡隨時存儲和調用包括文本、圖片、音頻和視頻等在內的各種非結構化數(shù)據(jù)文件。 阿里云OSS將數(shù)據(jù)文件以對象(object)的形式上傳到存儲空間(bucket)中。 可以進行

    2024年02月06日
    瀏覽(29)
  • 在 Spring Boot 中集成 MinIO 對象存儲

    在 Spring Boot 中集成 MinIO 對象存儲

    MinIO 是一個開源的對象存儲服務器,專注于高性能、分布式和兼容S3 API的存儲解決方案。本文將介紹如何在 Spring Boot 應用程序中集成 MinIO,以便您可以輕松地將對象存儲集成到您的應用中。 安裝minio 拉取 minio Docker鏡像 創(chuàng)建minio數(shù)據(jù)和配置目錄 運行minio容器,設置訪問和密鑰并

    2024年02月10日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包