| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454 |
- 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.aliyuncs.DefaultAcsClient;
- import com.aliyuncs.IAcsClient;
- import com.aliyuncs.exceptions.ClientException;
- import com.aliyuncs.exceptions.ServerException;
- import com.aliyuncs.mts.model.v20140618.SubmitJobsRequest;
- import com.aliyuncs.mts.model.v20140618.SubmitJobsResponse;
- import com.aliyuncs.mts.model.v20140618.SubmitMediaInfoJobRequest;
- import com.aliyuncs.mts.model.v20140618.SubmitMediaInfoJobResponse;
- import com.aliyuncs.profile.DefaultProfile;
- import com.cnd3b.common.parameter.parameter;
- import org.apache.commons.lang.exception.ExceptionUtils;
- import java.io.ByteArrayInputStream;
- import java.io.UnsupportedEncodingException;
- import java.net.URL;
- import java.net.URLDecoder;
- import java.net.URLEncoder;
- 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");
- //
- // }
- private static final String ossBucket = BUCKE_NAME_1;
- private static final String ossLocation = "oss-cn-hangzhou";
- private static final String REGION = "cn-hangzhou";
- private static final String mpsRegionId = "cn-hangzhou";
- private static final String mtsEndpoint = "mts." + mpsRegionId + ".aliyuncs.com";
- private static DefaultAcsClient aliyunClient;
- private static final String pipelineId = "3852035b69474d508167f2af72d9dce4";
- private static final String accessKeyId = AccessKey_ID;
- private static final String accessKeySecret = AccessKey_Secret;
- /**
- * 调用本接口之后媒体处理服务会对输入文件进行媒体信息分析,返回输入文件的媒体信息。您可以通过查询媒体信息作业接口得到媒体信息分析结果。
- *
- * @param Object
- * @return
- */
- public static String submitMediaInfoJob(String Object) {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("Bucket", ossBucket);
- jsonObject.put("Location", ossLocation);
- jsonObject.put("Object", Object);
- String json = jsonObject.toJSONString();
- try {
- DefaultProfile.addEndpoint(REGION, REGION, "Mts", mtsEndpoint);
- } catch (ClientException e) {
- System.out.print(ExceptionUtils.getStackTrace(e));
- System.exit(1);
- }
- aliyunClient = new DefaultAcsClient(DefaultProfile.getProfile(REGION, accessKeyId, accessKeySecret));
- SubmitMediaInfoJobRequest request = new SubmitMediaInfoJobRequest();
- request.setInput(json);
- request.setPipelineId(pipelineId);
- try {
- SubmitMediaInfoJobResponse response = aliyunClient.getAcsResponse(request);
- return JSONObject.toJSONString(response);
- } catch (ClientException e) {
- e.printStackTrace();
- }
- return "";
- }
- public static void transcoding(String TemplateId, String ossInputObject, String ossOutputObject) {
- // 创建DefaultAcsClient实例并初始化
- DefaultProfile profile = DefaultProfile.getProfile(
- mpsRegionId, // 地域ID
- accessKeyId, // RAM账号的AccessKey ID
- accessKeySecret); // RAM账号Access Key Secret
- IAcsClient client = new DefaultAcsClient(profile);
- // 创建API请求并设置参数
- SubmitJobsRequest request = new SubmitJobsRequest();
- // Input
- JSONObject input = new JSONObject();
- input.put("Location", ossLocation);
- input.put("Bucket", ossBucket);
- try {
- input.put("Object", URLEncoder.encode(ossInputObject, "utf-8"));
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException("input URL encode failed");
- }
- request.setInput(input.toJSONString());
- // Output
- String outputOSSObject;
- try {
- outputOSSObject = URLEncoder.encode(ossOutputObject, "utf-8");
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException("output URL encode failed");
- }
- JSONObject output = new JSONObject();
- output.put("OutputObject", outputOSSObject);
- // Ouput->Container
- // JSONObject container = new JSONObject();
- // container.put("Format", "mp4");
- // output.put("Container", container.toJSONString());
- // Ouput->Video
- // JSONObject video = new JSONObject();
- // video.put("Codec", "H.264");
- // video.put("Bitrate", "1500");
- // video.put("Width", "1280");
- // video.put("Fps", "25");
- // output.put("Video", video.toJSONString());
- // Ouput->Audio
- // JSONObject audio = new JSONObject();
- // audio.put("Codec", "AAC");
- // audio.put("Bitrate", "128");
- // audio.put("Channels", "2");
- // audio.put("Samplerate", "44100");
- // output.put("Audio", audio.toJSONString());
- // Ouput->TemplateId
- output.put("TemplateId", TemplateId);
- JSONArray outputs = new JSONArray();
- outputs.add(output);
- request.setOutputs(outputs.toJSONString());
- request.setOutputBucket(ossBucket);
- request.setOutputLocation(ossLocation);
- // PipelineId
- request.setPipelineId(pipelineId);
- // 发起请求并处理应答或异常
- SubmitJobsResponse response;
- try {
- response = client.getAcsResponse(request);
- System.out.println("RequestId is:" + response.getRequestId());
- if (response.getJobResultList().get(0).getSuccess()) {
- System.out.println("JobId is:" + response.getJobResultList().get(0).getJob().getJobId());
- } else {
- System.out.println("SubmitJobs Failed code:" + response.getJobResultList().get(0).getCode() +
- " message:" + response.getJobResultList().get(0).getMessage());
- }
- } catch (ServerException e) {
- e.printStackTrace();
- } catch (ClientException e) {
- e.printStackTrace();
- }
- }
- public static List<String> getOssFileList(String folderPath) {
- OSS client = new OSSClientBuilder().build(END_POINT, AccessKey_ID, AccessKey_Secret);
- // 构造ListObjectsRequest请求。
- ListObjectsRequest listObjectsRequest = new ListObjectsRequest(BUCKE_NAME_1);
- // 设置prefix参数来获取fun目录下的所有文件。
- listObjectsRequest.setPrefix(folderPath);
- // 递归列举目录下的所有文件。
- ObjectListing listing = client.listObjects(listObjectsRequest);
- // 遍历所有文件。
- List<String> keysList = new ArrayList<>();
- for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
- if (!objectSummary.getKey().endsWith("/")) {
- String key = objectSummary.getKey();
- // System.err.println(key);
- keysList.add(key);
- }
- }
- client.shutdown();
- return keysList;
- }
- }
|