|
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.io.FileUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.aliyun.oss.OSS;
|
|
|
import com.aliyun.oss.OSSClient;
|
|
|
import com.aliyun.oss.model.*;
|
|
|
import com.amazonaws.HttpMethod;
|
|
@@ -19,6 +20,7 @@ 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.common.util.CreateObjUtil;
|
|
|
import com.fdkankan.fyun.constant.StorageType;
|
|
|
import com.qiniu.common.Zone;
|
|
|
import com.qiniu.storage.Configuration;
|
|
@@ -83,6 +85,13 @@ public class UploadToOssUtil {
|
|
|
@Value("${local.path:/home/4dkankan}")
|
|
|
private String localPath;
|
|
|
|
|
|
+ /**
|
|
|
+ * oss文件上传命令
|
|
|
+ * 第一个参数是oss路径,要包含bucket名称
|
|
|
+ * 第二个参数是本地文件路径
|
|
|
+ */
|
|
|
+ private static final String UPLOAD_SH = "bash /opt/ossutil/upload.sh %s %s";
|
|
|
+
|
|
|
//上传的数据是byte[],key是上传后的文件名
|
|
|
public void upload(byte[] data,String key1) throws IOException{
|
|
|
log.info("开始上传文件 源路径:{},目标路径:{},type:{}" , new String(data, "UTF-8"),key1,type);
|
|
@@ -114,6 +123,25 @@ public class UploadToOssUtil {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通过脚本上传
|
|
|
+ * @param filePath
|
|
|
+ * @param key
|
|
|
+ */
|
|
|
+ public void uploadBySh(String filePath, String key) {
|
|
|
+ String ossPath = this.bucket + "/" + key;
|
|
|
+ try {
|
|
|
+ String command = String.format(UploadToOssUtil.UPLOAD_SH, ossPath, filePath);
|
|
|
+ log.info("开始上传文件, ossPath:{}, srcPath:{}", ossPath, filePath);
|
|
|
+ CreateObjUtil.callshell(command);
|
|
|
+ log.info("上传文件完毕, ossPath:{}, srcPath:{}", ossPath, filePath);
|
|
|
+ } catch(Exception e) {
|
|
|
+ log.error("上传文件失败, ossPath:{}, srcPath:{}", ossPath, filePath);
|
|
|
+ log.error("上传文件失败", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void uploadSdk(String filePath, String key1) {
|
|
|
log.info("开始上传文件 源路径:{},目标路径:{},type:{}" , filePath,key1,type);
|
|
|
switch (type){
|
|
@@ -146,12 +174,16 @@ public class UploadToOssUtil {
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
- public void deleteOss(String key1){
|
|
|
+ public void deleteOss(String objectName){
|
|
|
OSSClient ossClient = new OSSClient(point, key, secrey);
|
|
|
try {
|
|
|
- ossClient.deleteObject(bucket, key1);
|
|
|
+ ossClient.deleteObject(bucket, objectName);
|
|
|
} catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
+ log.error("OSS删除文件失败,key=" + objectName);
|
|
|
+ }finally {
|
|
|
+ if(ossClient != null){
|
|
|
+ ossClient.shutdown();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -168,15 +200,34 @@ public class UploadToOssUtil {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void uploadOss(byte[] data,String key1){
|
|
|
+ public void uploadOss(byte[] data,String objectName){
|
|
|
OSSClient ossClient = new OSSClient(point, key, secrey);
|
|
|
try {
|
|
|
- ossClient.putObject(bucket, key1, new ByteArrayInputStream(data));
|
|
|
+ ossClient.putObject(bucket, objectName, new ByteArrayInputStream(data));
|
|
|
} catch (Exception e) {
|
|
|
- log.error(e.toString()+key1);
|
|
|
+ log.error("oss上传文件失败", e);
|
|
|
+ }finally {
|
|
|
+ if(ossClient != null){
|
|
|
+ ossClient.shutdown();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- public void uploadAws(byte[] data,String key1){
|
|
|
+ public void uploadAws(byte[] data,String objectName){
|
|
|
+ BasicAWSCredentials awsCreds = new BasicAWSCredentials(s3key, s3secrey);
|
|
|
+ AmazonS3 s3 = AmazonS3ClientBuilder.standard()
|
|
|
+ .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
|
|
|
+ .withRegion(Regions.EU_WEST_2)
|
|
|
+ .build();
|
|
|
+ try {
|
|
|
+ com.amazonaws.services.s3.model.ObjectMetadata metadata = new com.amazonaws.services.s3.model.ObjectMetadata();
|
|
|
+ s3.putObject(this.bucket, objectName, new ByteArrayInputStream(data), metadata);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("s3上传文件失败", e);
|
|
|
+ }finally {
|
|
|
+ if(s3 != null){
|
|
|
+ s3.shutdown();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
public void uploadLocal(byte[] data,String key1){
|
|
|
InputStream in = new ByteArrayInputStream(data);
|
|
@@ -228,6 +279,7 @@ public class UploadToOssUtil {
|
|
|
ossClient.shutdown();
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
public void uploadAws(String filePath, String key1){
|
|
|
try{
|
|
|
uploadS3File(filePath, key1);
|
|
@@ -471,10 +523,10 @@ public class UploadToOssUtil {
|
|
|
/**
|
|
|
* 删除单个文件
|
|
|
*
|
|
|
- * @param filePath 文件路径[ eg: /head/xxxx.jpg ]
|
|
|
+ * @param objectName 文件路径[ eg: /head/xxxx.jpg ]
|
|
|
* @return
|
|
|
*/
|
|
|
- public void deleteS3Object(String filePath) {
|
|
|
+ public void deleteS3Object(String objectName) {
|
|
|
|
|
|
/**
|
|
|
* 创建s3对象
|
|
@@ -485,13 +537,18 @@ public class UploadToOssUtil {
|
|
|
.withRegion(Regions.EU_WEST_2)
|
|
|
.build();
|
|
|
|
|
|
- if (filePath.startsWith("/")) {
|
|
|
- filePath = filePath.substring(1);
|
|
|
+ if (objectName.startsWith("/")) {
|
|
|
+ objectName = objectName.substring(1);
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
- s3.deleteObject(s3bucket, filePath);
|
|
|
+ s3.deleteObject(s3bucket, objectName);
|
|
|
} catch (Exception e) {
|
|
|
+ log.error("s3删除文件失败,key="+objectName, e);
|
|
|
+ }finally {
|
|
|
+ if(s3 != null){
|
|
|
+ s3.shutdown();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -556,32 +613,6 @@ public class UploadToOssUtil {
|
|
|
return item;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 下载文件
|
|
|
- * @param bucketName 桶名
|
|
|
- * @param remoteFileName 文件名
|
|
|
- * @param path 下载路径
|
|
|
- */
|
|
|
- public boolean downFromS3(String bucketName, String remoteFileName, String path) {
|
|
|
- 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,remoteFileName);
|
|
|
- s3.getObject(request,new File(path));
|
|
|
- return true;
|
|
|
- } catch (Exception ase) {
|
|
|
- log.error("amazonS3下载文件异常 " + ase.getMessage(), ase);
|
|
|
- }
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
public List<String> listKeys(String sourcePath){
|
|
|
StorageType storageType = StorageType.get(type);
|
|
|
switch (storageType){
|
|
@@ -602,29 +633,38 @@ public class UploadToOssUtil {
|
|
|
public List<String> listKeysFromAli(String sourcePath) {
|
|
|
List<String> keyList = new ArrayList<>();
|
|
|
OSSClient ossClient = new OSSClient(point, key, secrey);
|
|
|
- boolean flag = true;
|
|
|
- String nextMaker = null;
|
|
|
- ListObjectsRequest listObjectsRequest = new ListObjectsRequest(this.bucket);
|
|
|
- //指定下一级文件
|
|
|
- listObjectsRequest.setPrefix(sourcePath);
|
|
|
- //设置分页的页容量
|
|
|
- listObjectsRequest.setMaxKeys(200);
|
|
|
- do
|
|
|
- {
|
|
|
- //获取下一页的起始点,它的下一项
|
|
|
- listObjectsRequest.setMarker(nextMaker);
|
|
|
- ObjectListing objectListing = ossClient.listObjects(listObjectsRequest);
|
|
|
- List<OSSObjectSummary> objectSummaries = objectListing.getObjectSummaries();
|
|
|
- List<String> collect = objectSummaries.stream().map(summary -> {
|
|
|
- return summary.getKey();
|
|
|
- }).collect(Collectors.toList());
|
|
|
- if(CollUtil.isNotEmpty(collect)){
|
|
|
- keyList.addAll(collect);
|
|
|
+ try {
|
|
|
+ boolean flag = true;
|
|
|
+ String nextMaker = null;
|
|
|
+ ListObjectsRequest listObjectsRequest = new ListObjectsRequest(this.bucket);
|
|
|
+ //指定下一级文件
|
|
|
+ listObjectsRequest.setPrefix(sourcePath);
|
|
|
+ //设置分页的页容量
|
|
|
+ listObjectsRequest.setMaxKeys(200);
|
|
|
+ do
|
|
|
+ {
|
|
|
+ //获取下一页的起始点,它的下一项
|
|
|
+ listObjectsRequest.setMarker(nextMaker);
|
|
|
+ ObjectListing objectListing = ossClient.listObjects(listObjectsRequest);
|
|
|
+ List<OSSObjectSummary> 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();
|
|
|
+ //全部执行完后,为false
|
|
|
+ flag = objectListing.isTruncated();
|
|
|
+ } while (flag);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("获取文件列表失败,path="+sourcePath, e);
|
|
|
+ }finally {
|
|
|
+ if(ossClient != null){
|
|
|
+ ossClient.shutdown();
|
|
|
}
|
|
|
- nextMaker = objectListing.getNextMarker();
|
|
|
- //全部执行完后,为false
|
|
|
- flag = objectListing.isTruncated();
|
|
|
- } while (flag);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
ossClient.shutdown();
|
|
|
|
|
@@ -644,29 +684,34 @@ public class UploadToOssUtil {
|
|
|
.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);
|
|
|
+ try {
|
|
|
+ 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);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("获取文件列表失败,path="+sourcePath, e);
|
|
|
+ }finally {
|
|
|
+ if(s3 != null){
|
|
|
+ s3.shutdown();
|
|
|
}
|
|
|
- nextMaker = objectListing.getNextMarker();
|
|
|
- flag = objectListing.isTruncated();
|
|
|
- }while (flag);
|
|
|
-
|
|
|
- s3.shutdown();
|
|
|
-
|
|
|
+ }
|
|
|
return keyList;
|
|
|
}
|
|
|
|
|
@@ -681,7 +726,7 @@ public class UploadToOssUtil {
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
|
- 拷贝
|
|
|
+ 拷贝目录
|
|
|
* </p>
|
|
|
* @author dengsixing
|
|
|
* @date 2022/1/18
|
|
@@ -691,14 +736,61 @@ public class UploadToOssUtil {
|
|
|
public void copyFiles(String sourcePath, String targetPath) throws IOException {
|
|
|
StorageType storageType = StorageType.get(type);
|
|
|
switch (storageType){
|
|
|
- case OSS: this.copyFilesFromAli(sourcePath, targetPath);
|
|
|
- case AWS: this.copyFilesFromAws(sourcePath, targetPath);
|
|
|
+ case OSS:
|
|
|
+ this.copyFilesFromAli(sourcePath, targetPath);
|
|
|
+ break;
|
|
|
+ case AWS:
|
|
|
+ this.copyFilesFromAws(sourcePath, targetPath);
|
|
|
+ break;
|
|
|
case LOCAL: this.copyFilesFromLocal(sourcePath, targetPath);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
|
+ 拷贝文件
|
|
|
+ * </p>
|
|
|
+ * @author dengsixing
|
|
|
+ * @date 2022/1/18
|
|
|
+ * @param sourceKey
|
|
|
+ * @param targetKey
|
|
|
+ **/
|
|
|
+ public void copyObject(String sourceKey, String targetKey) throws IOException {
|
|
|
+ StorageType storageType = StorageType.get(type);
|
|
|
+ switch (storageType){
|
|
|
+ case OSS:
|
|
|
+ this.copyObjectFromAli(sourceKey, targetKey);
|
|
|
+ break;
|
|
|
+ case AWS:
|
|
|
+ this.copyObjectFromAws(sourceKey, targetKey);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * <p>
|
|
|
+ 拷贝-阿里云
|
|
|
+ * </p>
|
|
|
+ * @author dengsixing
|
|
|
+ * @date 2022/1/18
|
|
|
+ * @param sourcePath
|
|
|
+ * @param targetPath
|
|
|
+ **/
|
|
|
+ public void copyObjectFromAli(String sourcePath, String targetPath) throws IOException {
|
|
|
+
|
|
|
+ // 创建OSSClient实例。
|
|
|
+ OSSClient ossClient = new OSSClient(point, key, secrey);
|
|
|
+ // 复制文件
|
|
|
+ log.info("开始复制:" + sourcePath);
|
|
|
+ ossClient.copyObject(this.bucket, sourcePath, this.bucket, targetPath);
|
|
|
+ log.info("复制成功:" + sourcePath);
|
|
|
+ ossClient.shutdown();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * <p>
|
|
|
拷贝-阿里云
|
|
|
* </p>
|
|
|
* @author dengsixing
|
|
@@ -762,6 +854,28 @@ public class UploadToOssUtil {
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
|
+ 拷贝-亚马逊
|
|
|
+ * </p>
|
|
|
+ * @author dengsixing
|
|
|
+ * @date 2022/1/18
|
|
|
+ * @param sourceKey
|
|
|
+ * @param targetKey
|
|
|
+ **/
|
|
|
+ public void copyObjectFromAws(String sourceKey, String targetKey){
|
|
|
+ BasicAWSCredentials awsCreds = new BasicAWSCredentials(s3key, s3secrey);
|
|
|
+ AmazonS3 s3 = AmazonS3ClientBuilder.standard()
|
|
|
+ .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
|
|
|
+ .withRegion(Regions.EU_WEST_2)//s3 地区位置
|
|
|
+ .build();
|
|
|
+ // 复制文件
|
|
|
+ log.info("开始复制:" + sourceKey);
|
|
|
+ s3.copyObject(this.bucket, sourceKey, this.bucket, targetKey);
|
|
|
+ log.info("复制成功:" + sourceKey);
|
|
|
+ s3.shutdown();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * <p>
|
|
|
拷贝-本地
|
|
|
* </p>
|
|
|
* @author dengsixing
|
|
@@ -817,9 +931,12 @@ public class UploadToOssUtil {
|
|
|
} catch (IOException e) {
|
|
|
log.error("读取scene.json文件流失败", e);
|
|
|
}
|
|
|
- ossClient.shutdown();
|
|
|
}catch (Exception e){
|
|
|
- log.error("oos找不到文件,文件路径:{}", objectName);
|
|
|
+ log.error("s3获取文件内容失败,key="+objectName, e);
|
|
|
+ }finally {
|
|
|
+ if(ossClient != null){
|
|
|
+ ossClient.shutdown();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return contentJson.toString();
|
|
@@ -834,10 +951,16 @@ public class UploadToOssUtil {
|
|
|
//创建oss客户端
|
|
|
OSSClient ossClient = new OSSClient(point, key, secrey);
|
|
|
// ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
|
|
|
- OSSObject ossObject = ossClient.getObject(bucket, objectName);
|
|
|
- String key = ossObject.getKey();
|
|
|
- if(StrUtil.isNotEmpty(key))
|
|
|
- return true;
|
|
|
+ try{
|
|
|
+ boolean exist = ossClient.doesObjectExist(bucket, objectName);
|
|
|
+ return exist;
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("s4判断是否存在key异常,key=" + objectName, e);
|
|
|
+ }finally {
|
|
|
+ if(ossClient != null){
|
|
|
+ ossClient.shutdown();
|
|
|
+ }
|
|
|
+ }
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -882,7 +1005,6 @@ public class UploadToOssUtil {
|
|
|
|
|
|
/**
|
|
|
* 获取文件内容-亚马逊
|
|
|
- * @param bucketName
|
|
|
* @param objectName
|
|
|
* @return
|
|
|
*/
|
|
@@ -893,11 +1015,16 @@ public class UploadToOssUtil {
|
|
|
.withCredentials(new AWSStaticCredentialsProvider(awsCreds))
|
|
|
.withRegion(Regions.EU_WEST_2)
|
|
|
.build();
|
|
|
- GetObjectRequest request = new GetObjectRequest(bucket,objectName);
|
|
|
- S3Object s3Object = s3.getObject(request);
|
|
|
- String key = s3Object.getKey();
|
|
|
- if(StrUtil.isNotEmpty(key))
|
|
|
- return true;
|
|
|
+ try {
|
|
|
+ boolean exist = s3.doesObjectExist(bucket, objectName);
|
|
|
+ return exist;
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("s4判断是否存在key异常,key=" + objectName, e);
|
|
|
+ }finally {
|
|
|
+ if(s3 != null){
|
|
|
+ s3.shutdown();
|
|
|
+ }
|
|
|
+ }
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -928,4 +1055,68 @@ public class UploadToOssUtil {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * oss下载文件到本地
|
|
|
+ * @param objectName
|
|
|
+ * @param localPath
|
|
|
+ */
|
|
|
+ public boolean download(String objectName, String localPath){
|
|
|
+ StorageType storageType = StorageType.get(this.type);
|
|
|
+ switch (storageType){
|
|
|
+ case OSS:
|
|
|
+ return this.downFormAli(objectName, localPath);
|
|
|
+ case AWS:
|
|
|
+ return this.downFromS3(objectName, localPath);
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 从阿里云oss下载文件到本地
|
|
|
+ * @param objectName 云端文件k地址
|
|
|
+ * @param localPath 本地文件地址
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean downFormAli(String objectName, String localPath){
|
|
|
+ OSSClient ossClient = new OSSClient(point, key, secrey);
|
|
|
+ try {
|
|
|
+ com.aliyun.oss.model.GetObjectRequest request = new com.aliyun.oss.model.GetObjectRequest(bucket,objectName);
|
|
|
+ ossClient.getObject(request, new File(localPath));
|
|
|
+ return true;
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("阿里云oss文件下载失败,key=" + objectName, e);
|
|
|
+ }finally {
|
|
|
+ if(ossClient != null){
|
|
|
+ ossClient.shutdown();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 从s3下载文件到本地
|
|
|
+ * @param objectName 云端文件k地址
|
|
|
+ * @param localPath 本地文件地址
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean downFromS3(String objectName, String localPath) {
|
|
|
+ BasicAWSCredentials awsCreds = new BasicAWSCredentials(s3key, s3secrey);
|
|
|
+ AmazonS3 s3 = AmazonS3ClientBuilder.standard()
|
|
|
+ .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
|
|
|
+ .withRegion(Regions.EU_WEST_2)
|
|
|
+ .build();
|
|
|
+ try {
|
|
|
+ GetObjectRequest request = new GetObjectRequest(this.bucket,objectName);
|
|
|
+ s3.getObject(request,new File(localPath));
|
|
|
+ return true;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("amazonS3下载文件失败,key=" + objectName, e);
|
|
|
+ }finally {
|
|
|
+ if(s3 != null){
|
|
|
+ s3.shutdown();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
}
|