腾讯云对象存储COS java版

新建maven项目    加入相关jar包java

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

 

//一、测试上传本地文件,返回地址api

//二、测试上传文件流,返回地址 缓存

package com.pt.TencentCosDemo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

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.exception.CosClientException;
import com.qcloud.cos.exception.CosServiceException;
import com.qcloud.cos.model.ObjectMetadata;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.model.PutObjectResult;
import com.qcloud.cos.model.StorageClass;
import com.qcloud.cos.region.Region;
import com.qcloud.cos.transfer.TransferManager;

/** 
 * @author: py
 * @version:2019年6月10日 下午9:52:06 
 * @Desc 腾讯云  cos对象存储
 */
public class TencentCosUtil_py {
    
	static String bucketName = "p-63553"; //桶的名称
    static String region = "ap-guangzhou";//区域北京则  beijing
    static String appId = "1553"; //APPID
    static COSCredentials cred = null;
    static TransferManager transferManager = null;
    static ClientConfig clientConfig = null;
	
    static {
        // 1 初始化用户身份信息(secretId, secretKey)
        //SecretId 是用于标识 API 调用者的身份
        String SecretId = "AKIDlKSrEb0iCRuKoVFm";
        //SecretKey是用于加密签名字符串和服务器端验证签名字符串的密钥
        String SecretKey = "hDg6xb1ta2EBtV4OqE";
        cred = new BasicCOSCredentials(SecretId, SecretKey);
        // 2 设置bucket的区域,
        clientConfig = new ClientConfig(new Region(region));    
    }
    
    public static void main(String[] args) {
    //一、测试上传本地文件,返回地址	
 String url = SimpleUploadFileFromLocal("aaa/cc/cam.png","d://cam.png");
    	System.out.println(url);
    	
//二、测试上传文件流,返回地址
    	String url2;
		try {
			//MultipartFile.getInputStream()
			url2 = SimpleUploadFileFromStream("aaa/dd/cam.png",new FileInputStream(new File("d://cam.png")));
			System.out.println(url2);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
    

    /**
     * @author py
     * @date 2019年6月10日下午10:05:08
     * @param key  key前面为路径,后面为文件名
     * @param filepath  上传文件的路径
     * @return String
     * @Des:  将本地文件上传到COS
     * "aaa/cc/cam.png","d://cam.png"
     */
    public static String SimpleUploadFileFromLocal(String key ,String filepath) {
    	// 3 生成cos客户端
    	COSClient cosClient = new COSClient(cred, clientConfig);
        File localFile = new File(filepath);
        PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
        // 设置存储类型, 默认是标准(Standard), 低频(standard_ia)
        putObjectRequest.setStorageClass(StorageClass.Standard);
        try {
            PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
            // 关闭客户端
            cosClient.shutdown();
            return "https://"+bucketName+".cos."+region+".myqcloud.com/"+key;
        } catch (CosServiceException e) {
            e.printStackTrace();
        } catch (CosClientException e) {
            e.printStackTrace();
        }
        
        // 关闭客户端
        cosClient.shutdown();
        return null;
    }
    
    
    
    
    
 // 从输入流进行读取并上传到COS
    public static String SimpleUploadFileFromStream(String key,InputStream input) throws IOException {
        //  生成cos客户端
        COSClient cosClient = new COSClient(cred, clientConfig);
        // bucket名需包含appid
        ObjectMetadata objectMetadata = new ObjectMetadata();
        // 从输入流上传必须制定content length, 不然http客户端可能会缓存全部数据,存在内存OOM的状况
        objectMetadata.setContentLength(Integer.valueOf(input.available()).longValue());
        // 默认下载时根据cos路径key的后缀返回响应的contenttype, 上传时设置contenttype会覆盖默认值
        objectMetadata.setContentType("image/jpeg");
        
        PutObjectRequest putObjectRequest =
                new PutObjectRequest(bucketName, key, input, objectMetadata);
        // 设置存储类型, 默认是标准(Standard), 低频(standard_ia)
        putObjectRequest.setStorageClass(StorageClass.Standard);
        try {
            PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
            // 关闭客户端
            cosClient.shutdown();
            return "https://"+bucketName+".cos."+region+".myqcloud.com/"+key;
        } catch (CosServiceException e) {
            e.printStackTrace();
        } catch (CosClientException e) {
            e.printStackTrace();
        }
        
        // 关闭客户端
        cosClient.shutdown();
        return null;
    }
    
	
	
}