| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296 |
- package com.cnd3b.utility.aliyun.oss;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.aliyun.oss.HttpMethod;
- import com.aliyun.oss.OSS;
- import com.aliyun.oss.OSSClientBuilder;
- import com.aliyun.oss.model.*;
- import com.cnd3b.common.parameter.parameter;
- import java.io.ByteArrayInputStream;
- import java.io.UnsupportedEncodingException;
- import java.net.URL;
- import java.net.URLDecoder;
- import java.sql.Date;
- import java.util.ArrayList;
- import java.util.Base64;
- import java.util.List;
- public class AliyunOSSUtil {
- //仓库名称-培训学习
- // public static final String BUCKE_NAME_1 = "jssx";
- //仓库名称-培训学习测试用
- public static final String BUCKE_NAME_1 = parameter.oss_bucke_name();
- //地域节点
- public static final String END_POINT = "oss-cn-hangzhou.aliyuncs.com";
- //AccessKey ID 阿里云AccessKey
- public static final String AccessKey_ID = "LTAI5t5mBLk8DbrVNZuQFPCP";
- //Access Key Secret 阿里云Secret
- public static final String AccessKey_Secret = "KWZjSffg8LuVMXWYP7LMeV4qCGm9x0";
- //外网访问
- public static final String file_url = BUCKE_NAME_1 + "." + END_POINT;
- /**
- * 创建文件夹,路径以反斜杠结尾:test/
- *
- * @return
- */
- public static void createFolder(String filePath) {
- OSS ossClient = new OSSClientBuilder().build(END_POINT, AccessKey_ID, AccessKey_Secret);
- ossClient.putObject(new PutObjectRequest(BUCKE_NAME_1, filePath, new ByteArrayInputStream("".getBytes())));
- ossClient.shutdown();
- }
- /**
- * 删除文件夹(OSS)
- *
- * @return
- */
- public static void deleteFolders(JSONArray jsonArray) {
- OSS ossClient = new OSSClientBuilder().build(END_POINT, AccessKey_ID, AccessKey_Secret);
- ArrayList<String> keysList = new ArrayList<>();
- for (Object obj : jsonArray) {
- keysList.add(obj.toString());
- }
- DeleteObjectsRequest request = new DeleteObjectsRequest(BUCKE_NAME_1);
- request.setKeys(keysList);
- // 发起deleteObjects请求。
- DeleteObjectsResult delObjResult = ossClient.deleteObjects(request);
- // 查看删除结果。
- for (String o : delObjResult.getDeletedObjects()) {
- String keyName = null;
- try {
- keyName = URLDecoder.decode(o, "UTF-8");
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- System.out.println("delete key name: " + keyName);
- }
- ossClient.shutdown();
- }
- /**
- * 上传文件
- *
- * @param folderPath 上传路径 :test/
- * @param filename 文件名称 :1.txt
- * @param base64Str base64字符串
- * @return
- */
- public static String uploadFile(String folderPath, String filename, String base64Str) {
- byte[] byteStr = Base64.getDecoder().decode(base64Str);
- OSS ossClient = new OSSClientBuilder().build(END_POINT, AccessKey_ID, AccessKey_Secret);
- String key = folderPath + filename;
- ossClient.putObject(new PutObjectRequest(BUCKE_NAME_1, key, new ByteArrayInputStream(byteStr)));
- ossClient.shutdown();
- return file_url + "/" + key;
- }
- /**
- * 删除文件(OSS)
- *
- * @return
- */
- public static void deleteFiles(JSONArray jsonArray) {
- OSS ossClient = new OSSClientBuilder().build(END_POINT, AccessKey_ID, AccessKey_Secret);
- List<String> keysList = new ArrayList<>();
- for (Object obj : jsonArray) {
- keysList.add(obj.toString());
- }
- DeleteObjectsRequest request = new DeleteObjectsRequest(BUCKE_NAME_1);
- request.setKeys(keysList);
- // 发起deleteObjects请求。
- DeleteObjectsResult delObjResult = ossClient.deleteObjects(request);
- // 查看删除结果。
- for (String o : delObjResult.getDeletedObjects()) {
- String keyName = null;
- try {
- keyName = URLDecoder.decode(o, "UTF-8");
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- System.out.println("delete key name: " + keyName);
- }
- ossClient.shutdown();
- }
- /**
- * 获取下级目录 filepath
- *
- * @return
- */
- public static String getFolders(String filepath) {
- OSS ossClient = new OSSClientBuilder().build(END_POINT, AccessKey_ID, AccessKey_Secret);
- // 构造ListObjectsRequest请求。
- ListObjectsRequest listObjectsRequest = new ListObjectsRequest(BUCKE_NAME_1);
- // 设置正斜线(/)为文件夹的分隔符。
- listObjectsRequest.setDelimiter("/");
- // 列出fun目录下的所有文件和文件夹。
- listObjectsRequest.setPrefix(filepath);
- ObjectListing listing = ossClient.listObjects(listObjectsRequest);
- // 遍历所有commonPrefix。
- ArrayList<String> commonPrefixList = new ArrayList<>();
- for (String commonPrefix : listing.getCommonPrefixes()) {
- commonPrefixList.add(commonPrefix);
- }
- // 关闭OSSClient。
- ossClient.shutdown();
- JSONObject object = new JSONObject();
- object.put("folder", commonPrefixList);
- return object.toJSONString();
- }
- /**
- * 获取所有文件夹
- *
- * @return
- */
- public static String getAllFolders() {
- OSS ossClient = new OSSClientBuilder().build(END_POINT, AccessKey_ID, AccessKey_Secret);
- // 构造ListObjectsRequest请求。
- ListObjectsRequest listObjectsRequest = new ListObjectsRequest(BUCKE_NAME_1);
- // 列举文件。
- ObjectListing listing = ossClient.listObjects(listObjectsRequest);
- //遍历所有文件。
- ArrayList<String> commonPrefixList = new ArrayList<>();
- for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
- // System.out.println(objectSummary.getKey());
- if (objectSummary.getKey().endsWith("/")) {
- String key = objectSummary.getKey();
- commonPrefixList.add(key);
- }
- }
- JSONObject object = new JSONObject();
- object.put("folder", commonPrefixList);
- // 关闭OSSClient。
- ossClient.shutdown();
- return object.toJSONString();
- }
- /**
- * 获取指定目录下的文件和文件夹
- *
- * @return
- */
- public static String getFilesOfPath(String folderPath) {
- OSS ossClient = new OSSClientBuilder().build(END_POINT, AccessKey_ID, AccessKey_Secret);
- // 构造ListObjectsRequest请求。
- ListObjectsRequest listObjectsRequest = new ListObjectsRequest(BUCKE_NAME_1);
- // 设置正斜线(/)为文件夹的分隔符。
- listObjectsRequest.setDelimiter("/");
- // 列出fun目录下的所有文件和文件夹。
- listObjectsRequest.setPrefix(folderPath);
- ObjectListing listing = ossClient.listObjects(listObjectsRequest);
- // 遍历所有文件。
- List<JSONObject> objectSummaryList = new ArrayList<>();
- for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
- if (!objectSummary.getKey().equals(folderPath)) {
- JSONObject object = new JSONObject();
- object.put("key", objectSummary.getKey());
- object.put("name", objectSummary.getKey().replace(folderPath, ""));
- object.put("size", objectSummary.getSize() / 1024);
- object.put("time", objectSummary.getLastModified());
- object.put("url", file_url + "/" + objectSummary.getKey());
- objectSummaryList.add(object);
- }
- }
- // 遍历所有commonPrefix。
- List<JSONObject> commonPrefixList = new ArrayList<>();
- for (String commonPrefix : listing.getCommonPrefixes()) {
- JSONObject object = new JSONObject();
- object.put("folderpath", commonPrefix);
- commonPrefixList.add(object);
- }
- // 关闭OSSClient。
- ossClient.shutdown();
- JSONObject object = new JSONObject();
- object.put("files", objectSummaryList);
- object.put("folder", commonPrefixList);
- return object.toJSONString();
- }
- /**
- * 获取oss文档预览url 60分钟,需要开通【智能媒体管理 IMM】并在oss下面配置
- *
- * @return
- */
- public static String getOssPreviewUrl(String key) {
- OSS ossClient = new OSSClientBuilder().build(END_POINT, AccessKey_ID, AccessKey_Secret);
- // 填写请求预览的文档完整路径,完整路径中不包含Bucket名称。
- // 设置样式,样式中包含文档预览参数。
- String style = "imm/previewdoc,copy_1";
- // 指定生成的签名URL过期时间,最大值为15分钟。本示例指定生成的签名URL过期时间为10分钟。
- Date expiration = new Date(System.currentTimeMillis() + 1000 * 60 * 60);
- GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(BUCKE_NAME_1, key, HttpMethod.GET);
- req.setExpiration(expiration);
- req.setProcess(style);
- URL signedUrl = ossClient.generatePresignedUrl(req);
- System.out.println(signedUrl);
- // 关闭OSSClient。
- ossClient.shutdown();
- JSONObject object = new JSONObject();
- object.put("url", signedUrl.toString());
- return object.toJSONString();
- }
- public static void main(String[] args) {
- //创建文件夹
- AliyunOSSUtil.createFolder("test1/");
- AliyunOSSUtil.createFolder("test2/");
- //批量删除文价夹
- JSONArray jsonArray = new JSONArray();
- jsonArray.add("test1/");
- jsonArray.add("test2/");
- AliyunOSSUtil.deleteFolders(jsonArray);
- // //上传文件
- AliyunOSSUtil.uploadFile("", "1.txt", "");
- AliyunOSSUtil.uploadFile("test2/", "1.txt", "");
- //批量删除文价夹
- JSONArray jsonArray2 = new JSONArray();
- jsonArray2.add("test1/1.txt");
- jsonArray2.add("test2/1.txt");
- AliyunOSSUtil.deleteFiles(jsonArray2);
- //获取下级目录
- getFolders("");
- //获取所有目录
- getAllFolders();
- //获取指定目录下的文件和文件夹
- getFilesOfPath("资料中心/");
- //获取oss文档预览url 60分钟,需要开通【智能媒体管理 IMM】并在oss下面配置
- getOssPreviewUrl("1.tx");
- }
- }
|