腾讯云
依赖
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.6.89</version>
</dependency>
常量
package com.atguigu.ggkt.vod.constant;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class CosConstant implements InitializingBean {
@Value("${tx.secretId}")
private String secretId;
@Value("${tx.secretKey}")
private String secretKey ;
@Value("${tx.region}")
private String region ;
@Value("${tx.bucketName}")
private String bucketName ;
public static String SECRET_ID;
public static String SECRET_KEY;
public static String REGION;
public static String BUCKET_NAME;
@Override
public void afterPropertiesSet() throws Exception {
SECRET_ID = secretId;
SECRET_KEY = secretKey;
REGION = region;
BUCKET_NAME = bucketName;
}
}
config
package com.atguigu.ggkt.vod.config;
import com.atguigu.ggkt.vod.constant.CosConstant;
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.HttpProtocol;
import com.qcloud.cos.region.Region;
import com.qcloud.cos.transfer.TransferManager;
import com.qcloud.cos.transfer.TransferManagerConfiguration;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@Configuration
public class CosConfig {
@Bean
public COSClient cosClient() {
String secretId = CosConstant.SECRET_ID;
System.out.println(secretId);
String secretKey = CosConstant.SECRET_KEY;
System.out.println(secretKey);
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
Region region = new Region(CosConstant.REGION);
ClientConfig clientConfig = new ClientConfig(region);
clientConfig.setHttpProtocol(HttpProtocol.https);
COSClient cosClient = new COSClient(cred, clientConfig);
return cosClient;
}
@Bean
public TransferManager transferManager(@Autowired COSClient cosClient){
ExecutorService threadPool = Executors.newFixedThreadPool(32);
TransferManager transferManager = new TransferManager(cosClient, threadPool);
TransferManagerConfiguration transferManagerConfiguration = new TransferManagerConfiguration();
transferManagerConfiguration.setMultipartUploadThreshold(5*1024*1024);
transferManagerConfiguration.setMinimumUploadPartSize(1*1024*1024);
transferManager.setConfiguration(transferManagerConfiguration);
return transferManager;
}
}
具体使用
package com.atguigu.ggkt.vod.service.impl;
import com.atguigu.ggkt.vod.constant.CosConstant;
import com.atguigu.ggkt.vod.service.FileUpLoadService;
import com.qcloud.cos.COSClient;
import com.qcloud.cos.model.ObjectMetadata;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.model.UploadResult;
import com.qcloud.cos.transfer.TransferManager;
import com.qcloud.cos.transfer.TransferManagerConfiguration;
import com.qcloud.cos.transfer.Upload;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@Service
public class FileUpLoadServiceImpl implements FileUpLoadService {
@Autowired
TransferManager transferManager;
@Override
public String UoLoad(MultipartFile file) {
long inputStreamLength = 1024 * 1024;
String key = "com/ggkt/" + file.getOriginalFilename();
try {
InputStream inputStream = file.getInputStream();
ObjectMetadata objectMetadata = new ObjectMetadata();
final int available = inputStream.available();
objectMetadata.setContentLength(available);
System.out.println(CosConstant.BUCKET_NAME);
PutObjectRequest putObjectRequest = new PutObjectRequest(CosConstant.BUCKET_NAME, key, inputStream, objectMetadata);
Upload upload = transferManager.upload(putObjectRequest);
UploadResult uploadResult = upload.waitForUploadResult();
} catch (Exception e) {
e.printStackTrace();
}
return "https://" + CosConstant.BUCKET_NAME + ".cos." + CosConstant.REGION + "." + "myqcloud.com/" + key;
}
}