|
@@ -15,10 +15,14 @@ import com.amazonaws.services.s3.model.CannedAccessControlList;
|
|
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
|
|
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
|
|
import com.amazonaws.services.s3.model.GetObjectRequest;
|
|
import com.amazonaws.services.s3.model.GetObjectRequest;
|
|
import com.amazonaws.services.s3.model.PutObjectRequest;
|
|
import com.amazonaws.services.s3.model.PutObjectRequest;
|
|
|
|
+import com.amazonaws.services.s3.model.S3Object;
|
|
|
|
+import com.amazonaws.services.s3.model.S3ObjectInputStream;
|
|
|
|
+import com.amazonaws.services.s3.model.S3ObjectSummary;
|
|
import com.fdkankan.fyun.constant.StorageType;
|
|
import com.fdkankan.fyun.constant.StorageType;
|
|
import com.qiniu.common.Zone;
|
|
import com.qiniu.common.Zone;
|
|
import com.qiniu.storage.Configuration;
|
|
import com.qiniu.storage.Configuration;
|
|
import com.qiniu.storage.UploadManager;
|
|
import com.qiniu.storage.UploadManager;
|
|
|
|
+import java.util.stream.Collectors;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.fileupload.FileItem;
|
|
import org.apache.commons.fileupload.FileItem;
|
|
import org.apache.commons.fileupload.FileItemFactory;
|
|
import org.apache.commons.fileupload.FileItemFactory;
|
|
@@ -81,18 +85,32 @@ public class UploadToOssUtil {
|
|
//上传的数据是byte[],key是上传后的文件名
|
|
//上传的数据是byte[],key是上传后的文件名
|
|
public void upload(byte[] data,String key1) throws IOException{
|
|
public void upload(byte[] data,String key1) throws IOException{
|
|
log.info("开始上传文件 源路径:{},目标路径:{},type:{}" , new String(data, "UTF-8"),key1,type);
|
|
log.info("开始上传文件 源路径:{},目标路径:{},type:{}" , new String(data, "UTF-8"),key1,type);
|
|
- switch (type){
|
|
|
|
- case "oss":uploadOss(data,key1); break;
|
|
|
|
- case "aws": uploadAws(data,key1); break;
|
|
|
|
- case "local":uploadLocal(data,key1); break;
|
|
|
|
|
|
+ StorageType storageType = StorageType.get(type);
|
|
|
|
+ switch (storageType){
|
|
|
|
+ case OSS:
|
|
|
|
+ uploadOss(data,key1);
|
|
|
|
+ break;
|
|
|
|
+ case AWS:
|
|
|
|
+ uploadAws(data,key1);
|
|
|
|
+ break;
|
|
|
|
+ case LOCAL:
|
|
|
|
+ uploadLocal(data,key1);
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
public void upload(String filePath, String key1) {
|
|
public void upload(String filePath, String key1) {
|
|
log.info("开始上传文件 源路径:{},目标路径:{},type:{}" , filePath,key1,type);
|
|
log.info("开始上传文件 源路径:{},目标路径:{},type:{}" , filePath,key1,type);
|
|
- switch (type){
|
|
|
|
- case "oss":uploadOss(filePath,key1); break;
|
|
|
|
- case "aws": uploadAws(filePath,key1); break;
|
|
|
|
- case "local":uploadLocal(filePath,key1); break;
|
|
|
|
|
|
+ StorageType storageType = StorageType.get(type);
|
|
|
|
+ switch (storageType){
|
|
|
|
+ case OSS:
|
|
|
|
+ uploadOss(filePath,key1);
|
|
|
|
+ break;
|
|
|
|
+ case AWS:
|
|
|
|
+ uploadAws(filePath,key1);
|
|
|
|
+ break;
|
|
|
|
+ case LOCAL:
|
|
|
|
+ uploadLocal(filePath,key1);
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
public void uploadSdk(String filePath, String key1) {
|
|
public void uploadSdk(String filePath, String key1) {
|
|
@@ -205,6 +223,8 @@ public class UploadToOssUtil {
|
|
|
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
log.error(e.toString() + filePath);
|
|
log.error(e.toString() + filePath);
|
|
|
|
+ } finally {
|
|
|
|
+ ossClient.shutdown();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
public void uploadAws(String filePath, String key1){
|
|
public void uploadAws(String filePath, String key1){
|
|
@@ -406,39 +426,45 @@ public class UploadToOssUtil {
|
|
* @param key1
|
|
* @param key1
|
|
* @throws IOException
|
|
* @throws IOException
|
|
*/
|
|
*/
|
|
- private void uploadS3File(String filePath, String key1) throws IOException {
|
|
|
|
- File file = new File(filePath);
|
|
|
|
- if(!file.exists()){
|
|
|
|
- log.info("要上传s3的文件不存在");
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ private void uploadS3File(String filePath, String key1) throws Exception {
|
|
/**
|
|
/**
|
|
* 创建s3对象
|
|
* 创建s3对象
|
|
*/
|
|
*/
|
|
BasicAWSCredentials awsCreds = new BasicAWSCredentials(s3key, s3secrey);
|
|
BasicAWSCredentials awsCreds = new BasicAWSCredentials(s3key, s3secrey);
|
|
AmazonS3 s3 = AmazonS3ClientBuilder.standard()
|
|
AmazonS3 s3 = AmazonS3ClientBuilder.standard()
|
|
- .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
|
|
|
|
- .withRegion(Regions.EU_WEST_2)
|
|
|
|
- .build();
|
|
|
|
|
|
+ .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
|
|
|
|
+ .withRegion(Regions.EU_WEST_2)
|
|
|
|
+ .build();
|
|
|
|
+ try{
|
|
|
|
+ File file = new File(filePath);
|
|
|
|
+ if(!file.exists()){
|
|
|
|
+ log.info("要上传s3的文件不存在");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
|
|
- // 设置文件并设置公读
|
|
|
|
- com.amazonaws.services.s3.model.ObjectMetadata metadata = new com.amazonaws.services.s3.model.ObjectMetadata();
|
|
|
|
- if(filePath.contains(".jpg")){
|
|
|
|
- metadata.setContentType("image/jpeg");
|
|
|
|
- }
|
|
|
|
- if(filePath.contains(".png")){
|
|
|
|
- metadata.setContentType("image/png");
|
|
|
|
- }
|
|
|
|
- PutObjectRequest request = new PutObjectRequest(s3bucket, key1, file);
|
|
|
|
- request.withCannedAcl(CannedAccessControlList.PublicRead);
|
|
|
|
- request.withMetadata(metadata);
|
|
|
|
|
|
+ // 设置文件并设置公读
|
|
|
|
+ com.amazonaws.services.s3.model.ObjectMetadata metadata = new com.amazonaws.services.s3.model.ObjectMetadata();
|
|
|
|
+ if(filePath.contains(".jpg")){
|
|
|
|
+ metadata.setContentType("image/jpeg");
|
|
|
|
+ }
|
|
|
|
+ if(filePath.contains(".png")){
|
|
|
|
+ metadata.setContentType("image/png");
|
|
|
|
+ }
|
|
|
|
+ PutObjectRequest request = new PutObjectRequest(s3bucket, key1, file);
|
|
|
|
+ request.withCannedAcl(CannedAccessControlList.PublicRead);
|
|
|
|
+ request.withMetadata(metadata);
|
|
|
|
|
|
- // 上传文件
|
|
|
|
- com.amazonaws.services.s3.model.PutObjectResult putObjectResult = s3.putObject(request);
|
|
|
|
- if (StringUtils.isNotEmpty(putObjectResult.getETag())) {
|
|
|
|
- log.info("s3上传文件成功:" + key1);
|
|
|
|
|
|
+ // 上传文件
|
|
|
|
+ com.amazonaws.services.s3.model.PutObjectResult putObjectResult = s3.putObject(request);
|
|
|
|
+ if (StringUtils.isNotEmpty(putObjectResult.getETag())) {
|
|
|
|
+ log.info("s3上传文件成功:" + key1);
|
|
|
|
+ }
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ throw e;
|
|
|
|
+ }finally {
|
|
|
|
+ s3.shutdown();
|
|
}
|
|
}
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -555,34 +581,52 @@ public class UploadToOssUtil {
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public List<String> listKeys(String sourcePath){
|
|
|
|
+ StorageType storageType = StorageType.get(type);
|
|
|
|
+ switch (storageType){
|
|
|
|
+ case OSS:
|
|
|
|
+ return this.listKeysFromAli(sourcePath);
|
|
|
|
+ case AWS:
|
|
|
|
+ return this.listKeysFromAws(sourcePath);
|
|
|
|
+ case LOCAL:
|
|
|
|
+ return this.listKeysFromLocal(sourcePath);
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 获得文件列表-阿里云
|
|
* 获得文件列表-阿里云
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
public List<String> listKeysFromAli(String sourcePath) {
|
|
public List<String> listKeysFromAli(String sourcePath) {
|
|
- OSSClient ossClient = new OSSClient(point, key, secrey);
|
|
|
|
List<String> keyList = new ArrayList<>();
|
|
List<String> keyList = new ArrayList<>();
|
|
|
|
+ OSSClient ossClient = new OSSClient(point, key, secrey);
|
|
boolean flag = true;
|
|
boolean flag = true;
|
|
- String maker = null;
|
|
|
|
|
|
+ String nextMaker = null;
|
|
|
|
+ ListObjectsRequest listObjectsRequest = new ListObjectsRequest(this.bucket);
|
|
|
|
+ //指定下一级文件
|
|
|
|
+ listObjectsRequest.setPrefix(sourcePath);
|
|
|
|
+ //设置分页的页容量
|
|
|
|
+ listObjectsRequest.setMaxKeys(200);
|
|
do
|
|
do
|
|
{
|
|
{
|
|
- ListObjectsRequest listObjectsRequest = new ListObjectsRequest(this.bucket);
|
|
|
|
- //指定下一级文件
|
|
|
|
- listObjectsRequest.setPrefix(sourcePath);
|
|
|
|
//获取下一页的起始点,它的下一项
|
|
//获取下一页的起始点,它的下一项
|
|
- listObjectsRequest.setMarker(maker);
|
|
|
|
- //设置分页的页容量
|
|
|
|
- listObjectsRequest.setMaxKeys(200);
|
|
|
|
|
|
+ listObjectsRequest.setMarker(nextMaker);
|
|
ObjectListing objectListing = ossClient.listObjects(listObjectsRequest);
|
|
ObjectListing objectListing = ossClient.listObjects(listObjectsRequest);
|
|
List<OSSObjectSummary> objectSummaries = objectListing.getObjectSummaries();
|
|
List<OSSObjectSummary> objectSummaries = objectListing.getObjectSummaries();
|
|
- for (OSSObjectSummary objectSummary : objectSummaries) {
|
|
|
|
- keyList.add(objectSummary.getKey());
|
|
|
|
|
|
+ List<String> collect = objectSummaries.stream().map(summary -> {
|
|
|
|
+ return summary.getKey();
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ if(CollUtil.isNotEmpty(collect)){
|
|
|
|
+ keyList.addAll(collect);
|
|
}
|
|
}
|
|
- maker = objectListing.getNextMarker();
|
|
|
|
|
|
+ nextMaker = objectListing.getNextMarker();
|
|
//全部执行完后,为false
|
|
//全部执行完后,为false
|
|
flag = objectListing.isTruncated();
|
|
flag = objectListing.isTruncated();
|
|
} while (flag);
|
|
} while (flag);
|
|
|
|
|
|
|
|
+ ossClient.shutdown();
|
|
|
|
+
|
|
return keyList;
|
|
return keyList;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -592,6 +636,36 @@ public class UploadToOssUtil {
|
|
*/
|
|
*/
|
|
public List<String> listKeysFromAws(String sourcePath) {
|
|
public List<String> listKeysFromAws(String sourcePath) {
|
|
List<String> keyList = new ArrayList<>();
|
|
List<String> keyList = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ BasicAWSCredentials awsCreds = new BasicAWSCredentials(s3key, s3secrey);
|
|
|
|
+ AmazonS3 s3 = AmazonS3ClientBuilder.standard()
|
|
|
|
+ .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
|
|
|
|
+ .withRegion(Regions.EU_WEST_2)
|
|
|
|
+ .build();
|
|
|
|
+
|
|
|
|
+ boolean flag = true;
|
|
|
|
+ String nextMaker = null;
|
|
|
|
+ com.amazonaws.services.s3.model.ListObjectsRequest listObjectsRequest = new com.amazonaws.services.s3.model.ListObjectsRequest();
|
|
|
|
+ listObjectsRequest.setBucketName(this.bucket);
|
|
|
|
+ listObjectsRequest.setPrefix(sourcePath);
|
|
|
|
+ listObjectsRequest.setMaxKeys(200);
|
|
|
|
+
|
|
|
|
+ do{
|
|
|
|
+ listObjectsRequest.setMarker(nextMaker);
|
|
|
|
+ com.amazonaws.services.s3.model.ObjectListing objectListing = s3.listObjects(listObjectsRequest);
|
|
|
|
+ List<S3ObjectSummary> objectSummaries = objectListing.getObjectSummaries();
|
|
|
|
+ List<String> collect =objectSummaries.stream().map(summary->{
|
|
|
|
+ return summary.getKey();
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ if(CollUtil.isNotEmpty(collect)){
|
|
|
|
+ keyList.addAll(collect);
|
|
|
|
+ }
|
|
|
|
+ nextMaker = objectListing.getNextMarker();
|
|
|
|
+ flag = objectListing.isTruncated();
|
|
|
|
+ }while (flag);
|
|
|
|
+
|
|
|
|
+ s3.shutdown();
|
|
|
|
+
|
|
return keyList;
|
|
return keyList;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -650,6 +724,7 @@ public class UploadToOssUtil {
|
|
ossClient.shutdown();
|
|
ossClient.shutdown();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* <p>
|
|
* <p>
|
|
拷贝-亚马逊
|
|
拷贝-亚马逊
|
|
@@ -735,8 +810,36 @@ public class UploadToOssUtil {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
public String getObjectContentFromAws(String bucketName, String objectName){
|
|
public String getObjectContentFromAws(String bucketName, String objectName){
|
|
- // TODO: 2022/1/21
|
|
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ /**
|
|
|
|
+ * 创建s3对象
|
|
|
|
+ */
|
|
|
|
+ BasicAWSCredentials awsCreds = new BasicAWSCredentials(s3key, s3secrey);
|
|
|
|
+ AmazonS3 s3 = AmazonS3ClientBuilder.standard()
|
|
|
|
+ .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
|
|
|
|
+ .withRegion(Regions.EU_WEST_2)
|
|
|
|
+ .build();
|
|
|
|
+
|
|
|
|
+ GetObjectRequest request = new GetObjectRequest(bucketName,objectName);
|
|
|
|
+ S3Object object = s3.getObject(request);
|
|
|
|
+ S3ObjectInputStream inputStream = object.getObjectContent();
|
|
|
|
+ StringBuilder content = new StringBuilder();
|
|
|
|
+ try(BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))){
|
|
|
|
+ while (true) {
|
|
|
|
+ String line = reader.readLine();
|
|
|
|
+ if (line == null) break;
|
|
|
|
+ content.append(line);
|
|
|
|
+ }
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
+ log.error("读取aws文件流失败", e);
|
|
|
|
+ }
|
|
|
|
+ return content.toString();
|
|
|
|
+ } catch (Exception ase) {
|
|
|
|
+ log.error("amazonS3下载文件异常 " + ase.getMessage(), ase);
|
|
|
|
+ }
|
|
return null;
|
|
return null;
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|