|
@@ -14,6 +14,7 @@ import com.amazonaws.services.s3.model.CannedAccessControlList;
|
|
|
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
|
|
|
import com.amazonaws.services.s3.model.GetObjectRequest;
|
|
|
import com.amazonaws.services.s3.model.PutObjectRequest;
|
|
|
+import com.fdkankan.fyun.constant.StorageType;
|
|
|
import com.qiniu.common.Zone;
|
|
|
import com.qiniu.storage.Configuration;
|
|
|
import com.qiniu.storage.UploadManager;
|
|
@@ -560,10 +561,10 @@ public class UploadToOssUtil {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获得文件列表
|
|
|
+ * 获得文件列表-阿里云
|
|
|
* @return
|
|
|
*/
|
|
|
- public List<String> listKeys(String sourcePath) {
|
|
|
+ public List<String> listKeysFromAli(String sourcePath) {
|
|
|
OSSClient ossClient = new OSSClient(point, key, secrey);
|
|
|
List<String> keyList = new ArrayList<>();
|
|
|
boolean flag = true;
|
|
@@ -571,23 +572,44 @@ public class UploadToOssUtil {
|
|
|
do
|
|
|
{
|
|
|
ListObjectsRequest listObjectsRequest = new ListObjectsRequest(this.bucket);
|
|
|
- listObjectsRequest.setPrefix(sourcePath); //指定下一级文件
|
|
|
- listObjectsRequest.setMarker(maker); //获取下一页的起始点,它的下一项
|
|
|
- listObjectsRequest.setMaxKeys(200);//设置分页的页容量
|
|
|
-// listObjectsRequest.setDelimiter("/");//跳出递归循环,只去指定目录下的文件。使用它时 Prefix文件路径要以“/”结尾
|
|
|
+ //指定下一级文件
|
|
|
+ listObjectsRequest.setPrefix(sourcePath);
|
|
|
+ //获取下一页的起始点,它的下一项
|
|
|
+ listObjectsRequest.setMarker(maker);
|
|
|
+ //设置分页的页容量
|
|
|
+ listObjectsRequest.setMaxKeys(200);
|
|
|
ObjectListing objectListing = ossClient.listObjects(listObjectsRequest);
|
|
|
List<OSSObjectSummary> objectSummaries = objectListing.getObjectSummaries();
|
|
|
for (OSSObjectSummary objectSummary : objectSummaries) {
|
|
|
keyList.add(objectSummary.getKey());
|
|
|
}
|
|
|
maker = objectListing.getNextMarker();
|
|
|
- flag = objectListing.isTruncated();//全部执行完后,为false
|
|
|
+ //全部执行完后,为false
|
|
|
+ flag = objectListing.isTruncated();
|
|
|
} while (flag);
|
|
|
|
|
|
return keyList;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 获得文件列表-亚马逊
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<String> listKeysFromAws(String sourcePath) {
|
|
|
+ List<String> keyList = new ArrayList<>();
|
|
|
+ return keyList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获得文件列表-阿里云
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<String> listKeysFromLocal(String sourcePath) {
|
|
|
+ List<String> keyList = new ArrayList<>();
|
|
|
+ return keyList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* <p>
|
|
|
拷贝
|
|
|
* </p>
|
|
@@ -597,9 +619,27 @@ public class UploadToOssUtil {
|
|
|
* @param targetPath
|
|
|
**/
|
|
|
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 LOCAL: this.copyFilesFromLocal(sourcePath, targetPath);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * <p>
|
|
|
+ 拷贝-阿里云
|
|
|
+ * </p>
|
|
|
+ * @author dengsixing
|
|
|
+ * @date 2022/1/18
|
|
|
+ * @param sourcePath
|
|
|
+ * @param targetPath
|
|
|
+ **/
|
|
|
+ public void copyFilesFromAli(String sourcePath, String targetPath) throws IOException {
|
|
|
|
|
|
//获取源文件列表
|
|
|
- List<String> sourceKeyList = this.listKeys(sourcePath);
|
|
|
+ List<String> sourceKeyList = this.listKeysFromAli(sourcePath);
|
|
|
if(CollUtil.isEmpty(sourceKeyList)){
|
|
|
return;
|
|
|
}
|
|
@@ -615,4 +655,88 @@ public class UploadToOssUtil {
|
|
|
ossClient.shutdown();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * <p>
|
|
|
+ 拷贝-亚马逊
|
|
|
+ * </p>
|
|
|
+ * @author dengsixing
|
|
|
+ * @date 2022/1/18
|
|
|
+ * @param sourcePath
|
|
|
+ * @param targetPath
|
|
|
+ **/
|
|
|
+ public void copyFilesFromAws(String sourcePath, String targetPath) throws IOException {
|
|
|
+ // TODO: 2022/1/21
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * <p>
|
|
|
+ 拷贝-本地
|
|
|
+ * </p>
|
|
|
+ * @author dengsixing
|
|
|
+ * @date 2022/1/18
|
|
|
+ * @param sourcePath
|
|
|
+ * @param targetPath
|
|
|
+ **/
|
|
|
+ public void copyFilesFromLocal(String sourcePath, String targetPath) throws IOException {
|
|
|
+ // TODO: 2022/1/21
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取文件内容
|
|
|
+ * @param bucketName
|
|
|
+ * @param objectName
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public InputStream getObjectContent(String bucketName, String objectName){
|
|
|
+ StorageType storageType = StorageType.get(type);
|
|
|
+ switch (storageType){
|
|
|
+ case OSS:
|
|
|
+ return this.getObjectContentFromAli(bucketName, objectName);
|
|
|
+ case AWS:
|
|
|
+ return this.getObjectContentFromAws(bucketName, objectName);
|
|
|
+ case LOCAL:
|
|
|
+ return this.getObjectContentFromLocal(objectName);
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取文件内容-阿里云
|
|
|
+ * @param bucketName
|
|
|
+ * @param objectName
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public InputStream getObjectContentFromAli(String bucketName, String objectName){
|
|
|
+ //创建oss客户端
|
|
|
+ OSSClient ossClient = new OSSClient(point, key, secrey);
|
|
|
+ // ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
|
|
|
+ OSSObject ossObject = ossClient.getObject(bucketName, objectName);
|
|
|
+ InputStream objectContent = ossObject.getObjectContent();
|
|
|
+ return objectContent;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取文件内容-亚马逊
|
|
|
+ * @param bucketName
|
|
|
+ * @param objectName
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public InputStream getObjectContentFromAws(String bucketName, String objectName){
|
|
|
+ // TODO: 2022/1/21
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取文件内容-本地
|
|
|
+ * @param objectName
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public InputStream getObjectContentFromLocal(String objectName){
|
|
|
+ // TODO: 2022/1/21
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|