<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.6.54</version>
</dependency>
package com.example.completablefuture.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSON;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.OSSObject;
import com.example.completablefuture.config.CosConfig;
import com.example.completablefuture.config.OSSConfig;
import com.example.completablefuture.listener.CommonListen;
import com.example.completablefuture.model.DeliveryGoodExcel;
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.model.*;
import com.qcloud.cos.region.Region;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@RestController
@RequestMapping("/excel/")
@Slf4j
public class ExcelController {
@Autowired
private CosConfig cosConfig;
@PostMapping("/upload")
public String upload(MultipartFile file) throws IOException {
String bucketName = cosConfig.getBucketname();
String endpoint = cosConfig.getEndpoint();
String endpointTemp = endpoint.substring(endpoint.indexOf(".") + 1);
endpointTemp = endpointTemp.substring(0, endpointTemp.indexOf("."));
String accessKeyId = cosConfig.getAccessKeyId();
String accesskeySecret = cosConfig.getAccessKeySecret();
COSCredentials cred = new BasicCOSCredentials(accessKeyId, accesskeySecret);
Region region = new Region(endpointTemp);
ClientConfig clientConfig = new ClientConfig(region);
COSClient cosClient = new COSClient(cred, clientConfig);
String originalFilename = file.getOriginalFilename();
LocalDateTime ldt = LocalDateTime.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
String folder = dtf.format(ldt);
String fileName = generateUUID();
String extension = originalFilename.substring(originalFilename.lastIndexOf("."));
String newFileName = "excel/" + folder + "/" + fileName + extension;
try {
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentLength(file.getSize());
objectMetadata.setContentType(file.getContentType());
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, newFileName, file.getInputStream(), objectMetadata);
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
log.info("newFileName:{}", newFileName);
if (putObjectResult != null) {
System.out.println(JSON.toJSONString(putObjectResult));
String fileAccessUrl = "https://" + bucketName + "." + endpoint + "/" + newFileName;
System.out.println(fileAccessUrl);
return fileAccessUrl;
}
} finally {
cosClient.shutdown();
}
return null;
}
@RequestMapping("importExcel")
@ResponseBody
public void importExcel(String newFileName) {
String bucketName = cosConfig.getBucketname();
String endpoint = cosConfig.getEndpoint();
String endpointTemp = endpoint.substring(endpoint.indexOf(".") + 1);
endpointTemp = endpointTemp.substring(0, endpointTemp.indexOf("."));
String accessKeyId = cosConfig.getAccessKeyId();
String accesskeySecret = cosConfig.getAccessKeySecret();
COSCredentials cred = new BasicCOSCredentials(accessKeyId, accesskeySecret);
Region region = new Region(endpointTemp);
ClientConfig clientConfig = new ClientConfig(region);
COSClient cosClient = new COSClient(cred, clientConfig);
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, newFileName);
COSObject cosObject = cosClient.getObject(getObjectRequest);
COSObjectInputStream cosObjectInput = cosObject.getObjectContent();
try {
List<Object> objects = EasyExcel.read(cosObjectInput, DeliveryGoodExcel.class, new CommonListen()).sheet().doReadSync();
log.info("xxxxx:{}", objects);
} finally {
cosClient.shutdown();
}
}
private static String generateUUID() {
return UUID.randomUUID().toString().replaceAll("-", "").substring(0, 32);
}
}
tx:
cos:
endpoint: cos.ap-beijing.myqcloud.cos
access-key-id: AKIDrWv3uUmnX0C7l9G6evve6G9l6AsTw
access-key-secret: D9nBH6evve6HBoAE2YnlSs1tUors
bucket-name: express-13045xx
package com.example.completablefuture.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Data
@Configuration
@ConfigurationProperties(prefix = "tx.cos")
public class CosConfig {
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketname;
}