腾讯云-对象存储-java sdk-示例

参考:

(1)预签名 URL: https://cloud.tencent.com/document/product/436/35217

(2)vue 调用put直接上传文件:https://blog.csdn.net/lht_521/article/details/108964591

 

我:

(1)pom引入

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

(2)工具类

package com.base.utils;

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.http.HttpMethodName;
import com.qcloud.cos.http.HttpProtocol;
import com.qcloud.cos.model.GeneratePresignedUrlRequest;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.region.Region;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;

/**
 * @author 吴桂鑫
 * @Description  腾讯云-对象存储 工具类
 */
public class QCloudUtils
{
     // 存储桶的命名格式必须为 BucketName-APPID
     private static final String  BUCKET_NAME = "BucketName-APPID";
     // 密钥ID
     private static final String  SECRET_ID = "SECRET_ID";
     // 密钥KEY
     private static final String  SECRET_KEY = "SECRET_KEY";
     // Region
     private static final String  REGION_NAME = "REGION_NAME";
     // basePicUrl
     private static final String  BASE_FILE_URL = "BASE_FILE_URL";

     // 生成 cos 客户端
     private static COSClient getCOSClient() {
         // 1 初始化用户身份信息(secretId, secretKey)
         COSCredentials cred = new BasicCOSCredentials(SECRET_ID, SECRET_KEY);
         // 2 设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
         Region region = new Region(REGION_NAME);
         ClientConfig clientConfig = new ClientConfig(region);
         // 3 这里建议设置使用 https 协议
         clientConfig.setHttpProtocol(HttpProtocol.https);
         // 4 生成 cos 客户端
         COSClient cosClient = new COSClient(cred, clientConfig);
         return cosClient;
     }

    /**
     * 生成带签名的 预下载链接
     * @param key 文件名称
     */
    public static String getPreDownLoadUrl(String key) {
        COSClient cosClient = getCOSClient();
        GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(BUCKET_NAME, key, HttpMethodName.GET);
        // 设置签名过期时间(可选), 若未进行设置, 则默认使用 ClientConfig 中的签名过期时间(1小时)
        // 这里设置签名在半个小时后过期
        Date expirationDate = new Date(System.currentTimeMillis() + 30 * 60 * 1000L);
        req.setExpiration(expirationDate);
        URL url = cosClient.generatePresignedUrl(req);
        String downLUrl = url.toString();
        cosClient.shutdown();
        return downLUrl;
    }

    /**
     * 生成带签名的 预上传链接,可直接发给客户端进行文件的上传
     * @param key
     */
    public static String getPreUploadUrl(String key) {
        COSClient cosClient = getCOSClient();
        //设置签名过期时间(可选), 若未进行设置, 则默认使用 ClientConfig 中的签名过期时间(1小时)
        Date expirationTime = new Date(System.currentTimeMillis() + 30L * 60L * 1000L);
        URL url = cosClient.generatePresignedUrl(BUCKET_NAME, key, expirationTime, HttpMethodName.PUT);
        cosClient.shutdown();
        return url.toString();
    }



    /**
     * 小文件上传
     * @param mf
     */
    public static void upoload(MultipartFile mf, String key) throws Exception{
        InputStream inputStream=null;
        COSClient cosClient=null;
        try{
            inputStream = mf.getInputStream();
            cosClient = getCOSClient();
            PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKET_NAME,key,inputStream,null);
            getCOSClient().putObject(putObjectRequest);
        }finally {
            if(cosClient!=null) {
                cosClient.shutdown();
            }
            if(inputStream!=null) {
                inputStream.close();
            }

        }
    }


    /**
     * 判断网络给定地址图片是否存在
     * @param key
     */
    public static URL getUrl(String key) {
        try {
            URL url = new URL(BASE_FILE_URL + key);
            URLConnection uc = url.openConnection();
            InputStream in = uc.getInputStream();
            if (key.equalsIgnoreCase(uc.getURL().toString()))
                in.close();
            return url;
        } catch (Exception e) {
            return null;
        }
    }

    public static void main(String[] args)
    {
        getPreUploadUrl("test.mp3");
    }
}

(3)vue页面调用put直接上传文件

uploadCos(file) {
    return request({
      url: '/xxx/xxxx',
      data: file,
      method: 'put',
      headers: {'Content-Type':'binary'}
    })
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值