package com.aliyun.oss.demo; import com.aliyun.oss.ClientException; import com.aliyun.oss.OSSClient; import com.aliyun.oss.OSSException; import com.aliyun.oss.model.*; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import java.util.ArrayList; import java.util.List; /** * @BelongsProject: maven-demo * @BelongsPackage: com.aliyun.oss.demo * @Author: Guoyh * @CreateTime: 2018-10-11 15:36 * @Description: 拷貝文件 */ public class CopyObjects { static Logger logger = Logger.getLogger(HelloOSS.class); // endpoint是訪問OSS的域名。若是您已經在OSS的控制檯上 建立了Bucket,請在控制檯上查看域名。 // 若是您尚未建立Bucket,endpoint選擇請參看文檔中心的「開發人員指南 > 基本概念 > 訪問域名」, // 連接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region // endpoint的格式形如「http://oss-cn-hangzhou.aliyuncs.com/」,注意http://後不帶bucket名稱, // 好比「http://bucket-name.oss-cn-hangzhou.aliyuncs.com」,是錯誤的endpoint,請去掉其中的「bucket-name」。 private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com"; // accessKeyId和accessKeySecret是OSS的訪問密鑰,您能夠在控制檯上建立和查看, // 建立和查看訪問密鑰的連接地址是:https://ak-console.aliyun.com/#/。 // 注意:accessKeyId和accessKeySecret先後都沒有空格,從控制檯複製時請檢查並去除多餘的空格。 private static String accessKeyId = ""; private static String accessKeySecret = ""; // Bucket用來管理所存儲Object的存儲空間,詳細描述請參看「開發人員指南 > 基本概念 > OSS基本概念介紹」。 // Bucket命名規範以下:只能包括小寫字母,數字和短橫線(-),必須以小寫字母或者數字開頭,長度必須在3-63字節之間。 private static String bucketName = ""; public static void main(String[] args) { // 日誌配置,OSS Java SDK使用log4j記錄錯誤信息。示例程序會在工程目錄下生成「oss-demo.log」日誌文件,默認日誌級別是INFO。 // 日誌的配置文件是「conf/log4j.properties」,若是您不須要日誌,能夠沒有日誌配置文件和下面的日誌配置。 PropertyConfigurator.configure("conf/log4j.properties"); logger.info("Started"); // 生成OSSClient,您能夠指定一些參數,詳見「SDK手冊 > Java-SDK > 初始化」, // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); try { /* 校驗存儲空間 */ // 判斷Bucket是否存在。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init if (ossClient.doesBucketExist(bucketName)) { System.out.println("您已經建立Bucket:" + bucketName + "。"); } else { System.out.println("您的Bucket不存在,建立Bucket:" + bucketName + "。"); // 建立Bucket。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init ossClient.createBucket(bucketName); } // 查看Bucket信息。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init BucketInfo info = ossClient.getBucketInfo(bucketName); System.out.println("Bucket " + bucketName + "的信息以下:"); System.out.println("\t數據中心:" + info.getBucket().getLocation()); System.out.println("\t建立時間:" + info.getBucket().getCreationDate()); System.out.println("\t用戶標誌:" + info.getBucket().getOwner()); /*拷貝文件*/ String sourceBucketName = bucketName; String sourceObjectName = "oss-accesslog/********2018-10-10-15-00-00-0001"; String destinationBucketName = bucketName; String destinationObjectName = "*****/********2018-10-10-15-00-00-0001-copy"; ObjectMetadata objectMetadata = ossClient.getObjectMetadata(sourceBucketName, sourceObjectName); // 獲取被拷貝文件的大小。 long contentLength = objectMetadata.getContentLength(); // 設置分片大小爲10MB。 long partSize = 1024 * 1024 * 10; // 計算分片總數。 int partCount = (int) (contentLength / partSize); if (contentLength % partSize != 0) { partCount++; } System.out.println("total part count:" + partCount); // 初始化拷貝任務。能夠經過InitiateMultipartUploadRequest指定目標文件元信息。 InitiateMultipartUploadRequest initiateMultipartUploadRequest = new InitiateMultipartUploadRequest(destinationBucketName, destinationObjectName); InitiateMultipartUploadResult initiateMultipartUploadResult = ossClient.initiateMultipartUpload(initiateMultipartUploadRequest); String uploadId = initiateMultipartUploadResult.getUploadId(); // 分片拷貝。 List<PartETag> partETags = new ArrayList<PartETag>(); for (int i = 0; i < partCount; i++) { // 計算每一個分片的大小。 long skipBytes = partSize * i; long size = partSize < contentLength - skipBytes ? partSize : contentLength - skipBytes; // 建立UploadPartCopyRequest。能夠經過UploadPartCopyRequest指定限定條件。 UploadPartCopyRequest uploadPartCopyRequest = new UploadPartCopyRequest(sourceBucketName, sourceObjectName, destinationBucketName, destinationObjectName); uploadPartCopyRequest.setUploadId(uploadId); uploadPartCopyRequest.setPartSize(size); uploadPartCopyRequest.setBeginIndex(skipBytes); uploadPartCopyRequest.setPartNumber(i + 1); UploadPartCopyResult uploadPartCopyResult = ossClient.uploadPartCopy(uploadPartCopyRequest); // 將返回的分片ETag保存到partETags中。 partETags.add(uploadPartCopyResult.getPartETag()); } // 提交分片拷貝任務。 CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest( destinationBucketName, destinationObjectName, uploadId, partETags); ossClient.completeMultipartUpload(completeMultipartUploadRequest); System.out.println("\t"+destinationObjectName+"\t"+"拷貝完成"); } catch (OSSException oe) { oe.printStackTrace(); } catch (ClientException ce) { ce.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { ossClient.shutdown(); } logger.info("Completed"); } }
package com.aliyun.oss.demo; import com.aliyun.oss.ClientException; import com.aliyun.oss.OSSClient; import com.aliyun.oss.OSSException; import com.aliyun.oss.model.BucketInfo; import com.aliyun.oss.model.ListObjectsRequest; import com.aliyun.oss.model.OSSObjectSummary; import com.aliyun.oss.model.ObjectListing; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import java.util.List; /** * @BelongsProject: maven-demo * @BelongsPackage: com.aliyun.oss.demo * @Author: Guoyh * @CreateTime: 2018-10-12 13:39 * @Description: 刪除oss對象 */ public class DeleteObjects { static Logger logger = Logger.getLogger(HelloOSS.class); // endpoint是訪問OSS的域名。若是您已經在OSS的控制檯上 建立了Bucket,請在控制檯上查看域名。 // endpoint的格式形如「http://oss-cn-hangzhou.aliyuncs.com/」,注意http://後不帶bucket名稱, // 好比「http://bucket-name.oss-cn-hangzhou.aliyuncs.com」,是錯誤的endpoint,請去掉其中的「bucket-name」。 private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com"; // accessKeyId和accessKeySecret是OSS的訪問密鑰,您能夠在控制檯上建立和查看 // 注意:accessKeyId和accessKeySecret先後都沒有空格,從控制檯複製時請檢查並去除多餘的空格。 private static String accessKeyId = ""; private static String accessKeySecret = ""; // Bucket用來管理所存儲Object的存儲空間, // Bucket命名規範以下:只能包括小寫字母,數字和短橫線(-),必須以小寫字母或者數字開頭,長度必須在3-63字節之間。 private static String bucketName = ""; public static void main(String[] args) { // 日誌配置,OSS Java SDK使用log4j記錄錯誤信息。示例程序會在工程目錄下生成「oss-demo.log」日誌文件,默認日誌級別是INFO。 // 日誌的配置文件是「conf/log4j.properties」,若是您不須要日誌,能夠沒有日誌配置文件和下面的日誌配置。 PropertyConfigurator.configure("conf/log4j.properties"); logger.info("Started"); // 生成OSSClient,您能夠指定一些參數, OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); try { /* 校驗存儲空間 */ // 判斷Bucket是否存在。 if (ossClient.doesBucketExist(bucketName)) { System.out.println("您已經建立Bucket:" + bucketName + "。"); } else { System.out.println("您的Bucket不存在,建立Bucket:" + bucketName + "。"); // 建立Bucket。 ossClient.createBucket(bucketName); } // 查看Bucket信息。 BucketInfo info = ossClient.getBucketInfo(bucketName); System.out.println("Bucket " + bucketName + "的信息以下:"); System.out.println("\t數據中心:" + info.getBucket().getLocation()); System.out.println("\t建立時間:" + info.getBucket().getCreationDate()); System.out.println("\t用戶標誌:" + info.getBucket().getOwner()); /*遍歷存儲空間*/ // 查看Bucket中的Object。 // 指定前綴。列舉文件 final String keyPrefix = "************"; // 列舉包含指定前綴的文件。默認列舉100個文件。 ObjectListing objectListingWithPrefix = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix)); List<OSSObjectSummary> sums = objectListingWithPrefix.getObjectSummaries(); System.out.println("您有如下Object:"); for (OSSObjectSummary s : sums) { System.out.println("\t" + s.getKey()); } System.out.println("\t" + "--------------------------------------------------------------------------"); /*刪除空間文件*/ // 刪除Object。詳細請參看「SDK手冊 > Java-SDK > 管理文件」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket ossClient.deleteObject(bucketName, "************/89gN8339293844m6915l693800g7Tk40.gif"); System.out.println("刪除Object:" + "************/89gN8339293844m6915l693800g7Tk40.gif" + "成功。"); System.out.println("\t" + "--------------------------------------------------------------------------"); ObjectListing objectListingWithPrefixP = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix)); List<OSSObjectSummary> sum = objectListingWithPrefixP.getObjectSummaries(); System.out.println("您有如下Object:"); for (OSSObjectSummary s : sum) { System.out.println("\t" + s.getKey()); } } catch (OSSException oe) { oe.printStackTrace(); } catch (ClientException ce) { ce.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { ossClient.shutdown(); } logger.info("Completed"); } }
package com.aliyun.oss.demo; import com.aliyun.oss.ClientException; import com.aliyun.oss.OSSClient; import com.aliyun.oss.OSSException; import com.aliyun.oss.model.*; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import java.util.List; /** * @BelongsProject: maven-demo * @BelongsPackage: com.aliyun.oss.demo * @Author: Guoyh * @CreateTime: 2018-10-11 14:51 * @Description: 下載OSS文件 */ public class DownloadObjects { static Logger logger = Logger.getLogger(HelloOSS.class); // endpoint是訪問OSS的域名。若是您已經在OSS的控制檯上 建立了Bucket,請在控制檯上查看域名。 // 若是您尚未建立Bucket,endpoint選擇請參看文檔中心的「開發人員指南 > 基本概念 > 訪問域名」, // 連接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region // endpoint的格式形如「http://oss-cn-hangzhou.aliyuncs.com/」,注意http://後不帶bucket名稱, // 好比「http://bucket-name.oss-cn-hangzhou.aliyuncs.com」,是錯誤的endpoint,請去掉其中的「bucket-name」。 private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com"; // accessKeyId和accessKeySecret是OSS的訪問密鑰,您能夠在控制檯上建立和查看, // 建立和查看訪問密鑰的連接地址是:https://ak-console.aliyun.com/#/。 // 注意:accessKeyId和accessKeySecret先後都沒有空格,從控制檯複製時請檢查並去除多餘的空格。 private static String accessKeyId = ""; private static String accessKeySecret = ""; // Bucket用來管理所存儲Object的存儲空間,詳細描述請參看「開發人員指南 > 基本概念 > OSS基本概念介紹」。 // Bucket命名規範以下:只能包括小寫字母,數字和短橫線(-),必須以小寫字母或者數字開頭,長度必須在3-63字節之間。 private static String bucketName = ""; public static void main(String[] args) { // 日誌配置,OSS Java SDK使用log4j記錄錯誤信息。示例程序會在工程目錄下生成「oss-demo.log」日誌文件,默認日誌級別是INFO。 // 日誌的配置文件是「conf/log4j.properties」,若是您不須要日誌,能夠沒有日誌配置文件和下面的日誌配置。 PropertyConfigurator.configure("conf/log4j.properties"); logger.info("Started"); // 生成OSSClient,您能夠指定一些參數,詳見「SDK手冊 > Java-SDK > 初始化」, // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); try { /* 校驗存儲空間 */ // 判斷Bucket是否存在。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init if (ossClient.doesBucketExist(bucketName)) { System.out.println("您已經建立Bucket:" + bucketName + "。"); } else { System.out.println("您的Bucket不存在,建立Bucket:" + bucketName + "。"); // 建立Bucket。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init ossClient.createBucket(bucketName); } // 查看Bucket信息。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init BucketInfo info = ossClient.getBucketInfo(bucketName); System.out.println("Bucket " + bucketName + "的信息以下:"); System.out.println("\t數據中心:" + info.getBucket().getLocation()); System.out.println("\t建立時間:" + info.getBucket().getCreationDate()); System.out.println("\t用戶標誌:" + info.getBucket().getOwner()); /*遍歷存儲空間文件 並下載*/ // 查看Bucket中的Object。詳細請參看「SDK手冊 > Java-SDK > 管理文件」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket // 指定前綴。 final String keyPrefix = "oss-accesslog"; // 列舉包含指定前綴的文件。默認列舉100個文件。 ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix)); List<OSSObjectSummary> sums = objectListing.getObjectSummaries(); System.out.println("您有如下Object:"); //文件名+訪問路徑 for (OSSObjectSummary s : sums) { /*下載文件到本地*/ // 下載OSS文件到本地文件。若是指定的本地文件存在會覆蓋,不存在則新建。 String str = s.getKey(); // ossClient.getObject(new GetObjectRequest(bucketName, str), new File("G://oss//oss-accesslog//"+str.substring(str.lastIndexOf("/")))); System.out.println("\t" + str+"\t" +"下載完成!"); } /*下載文件*/ String objectKey = "oss-accesslog/**********2018-10-10-15-00-00-0001"; // ossClient.getObject(new GetObjectRequest(bucketName, objectKey), new File("G://oss//oss-accesslog//"+objectKey.substring(objectKey.lastIndexOf("/")))); // System.out.println("\t" + objectKey.substring(objectKey.lastIndexOf("/"))+"\t" +"下載完成!"); } catch (OSSException oe) { oe.printStackTrace(); } catch (ClientException ce) { ce.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { ossClient.shutdown(); } logger.info("Completed"); } }
package com.aliyun.oss.demo; import com.aliyun.oss.ClientException; import com.aliyun.oss.OSSClient; import com.aliyun.oss.OSSException; import com.aliyun.oss.model.*; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import java.util.List; /** * @BelongsProject: maven-demo * @BelongsPackage: com.aliyun.oss.demo * @Author: Guoyh * @CreateTime: 2018-10-11 14:28 * @Description: 獲取文件訪問的URL */ public class GetObjectsRequestURL { static Logger logger = Logger.getLogger(HelloOSS.class); // endpoint是訪問OSS的域名。若是您已經在OSS的控制檯上 建立了Bucket,請在控制檯上查看域名。 // 若是您尚未建立Bucket,endpoint選擇請參看文檔中心的「開發人員指南 > 基本概念 > 訪問域名」, // 連接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region // endpoint的格式形如「http://oss-cn-hangzhou.aliyuncs.com/」,注意http://後不帶bucket名稱, // 好比「http://bucket-name.oss-cn-hangzhou.aliyuncs.com」,是錯誤的endpoint,請去掉其中的「bucket-name」。 private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com"; // accessKeyId和accessKeySecret是OSS的訪問密鑰,您能夠在控制檯上建立和查看, // 建立和查看訪問密鑰的連接地址是:https://ak-console.aliyun.com/#/。 // 注意:accessKeyId和accessKeySecret先後都沒有空格,從控制檯複製時請檢查並去除多餘的空格。 private static String accessKeyId = ""; private static String accessKeySecret = ""; // Bucket用來管理所存儲Object的存儲空間,詳細描述請參看「開發人員指南 > 基本概念 > OSS基本概念介紹」。 // Bucket命名規範以下:只能包括小寫字母,數字和短橫線(-),必須以小寫字母或者數字開頭,長度必須在3-63字節之間。 private static String bucketName = ""; public static void main(String[] args) { // 日誌配置,OSS Java SDK使用log4j記錄錯誤信息。示例程序會在工程目錄下生成「oss-demo.log」日誌文件,默認日誌級別是INFO。 // 日誌的配置文件是「conf/log4j.properties」,若是您不須要日誌,能夠沒有日誌配置文件和下面的日誌配置。 PropertyConfigurator.configure("conf/log4j.properties"); logger.info("Started"); // 生成OSSClient,您能夠指定一些參數,詳見「SDK手冊 > Java-SDK > 初始化」, // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); try { /* 校驗存儲空間 */ // 判斷Bucket是否存在。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init if (ossClient.doesBucketExist(bucketName)) { System.out.println("您已經建立Bucket:" + bucketName + "。"); } else { System.out.println("您的Bucket不存在,建立Bucket:" + bucketName + "。"); // 建立Bucket。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init ossClient.createBucket(bucketName); } // 查看Bucket信息。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init BucketInfo info = ossClient.getBucketInfo(bucketName); System.out.println("Bucket " + bucketName + "的信息以下:"); System.out.println("\t數據中心:" + info.getBucket().getLocation()); System.out.println("\t建立時間:" + info.getBucket().getCreationDate()); System.out.println("\t用戶標誌:" + info.getBucket().getOwner()); /*遍歷存儲空間*/ // 查看Bucket中的Object。詳細請參看「SDK手冊 > Java-SDK > 管理文件」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket // 指定前綴。 final String keyPrefix = "**********"; // 列舉包含指定前綴的文件。默認列舉100個文件。 ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix)); List<OSSObjectSummary> sums = objectListing.getObjectSummaries(); System.out.println("您"+keyPrefix+"有如下Object:"); //文件名+訪問路徑 for (OSSObjectSummary s : sums) { if (s.getKey().endsWith("/")) { System.out.println("\t" + s.getKey()); }else { System.out.println("\t" + s.getKey() + "\t" + "訪問路徑:" + "http://**********.oss-cn-huhehaote.aliyuncs.com/" + s.getKey()+"?x-oss-process=image/resize,m_fixed,h_128,w_236"); } } } catch (OSSException oe) { oe.printStackTrace(); } catch (ClientException ce) { ce.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { ossClient.shutdown(); } logger.info("Completed"); } }
package com.aliyun.oss.demo; import java.io.*; import java.net.URL; import java.util.List; import java.util.Date; import java.util.Random; import com.aliyun.oss.ClientException; import com.aliyun.oss.OSSClient; import com.aliyun.oss.OSSException; import com.aliyun.oss.model.*; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class HelloOSS { static Logger logger = Logger.getLogger(HelloOSS.class); // endpoint是訪問OSS的域名。若是您已經在OSS的控制檯上 建立了Bucket,請在控制檯上查看域名。 // 若是您尚未建立Bucket,endpoint選擇請參看文檔中心的「開發人員指南 > 基本概念 > 訪問域名」, // 連接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region // endpoint的格式形如「http://oss-cn-hangzhou.aliyuncs.com/」,注意http://後不帶bucket名稱, // 好比「http://bucket-name.oss-cn-hangzhou.aliyuncs.com」,是錯誤的endpoint,請去掉其中的「bucket-name」。 private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com"; // accessKeyId和accessKeySecret是OSS的訪問密鑰,您能夠在控制檯上建立和查看, // 建立和查看訪問密鑰的連接地址是:https://ak-console.aliyun.com/#/。 // 注意:accessKeyId和accessKeySecret先後都沒有空格,從控制檯複製時請檢查並去除多餘的空格。 private static String accessKeyId = ""; private static String accessKeySecret = ""; // Bucket用來管理所存儲Object的存儲空間,詳細描述請參看「開發人員指南 > 基本概念 > OSS基本概念介紹」。 // Bucket命名規範以下:只能包括小寫字母,數字和短橫線(-),必須以小寫字母或者數字開頭,長度必須在3-63字節之間。 private static String bucketName = ""; public static void main(String[] args) { // 日誌配置,OSS Java SDK使用log4j記錄錯誤信息。示例程序會在工程目錄下生成「oss-demo.log」日誌文件,默認日誌級別是INFO。 // 日誌的配置文件是「conf/log4j.properties」,若是您不須要日誌,能夠沒有日誌配置文件和下面的日誌配置。 PropertyConfigurator.configure("conf/log4j.properties"); logger.info("Started"); // 生成OSSClient,您能夠指定一些參數,詳見「SDK手冊 > Java-SDK > 初始化」, // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); try { /* 校驗存儲空間 */ // 判斷Bucket是否存在。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init if (ossClient.doesBucketExist(bucketName)) { System.out.println("您已經建立Bucket:" + bucketName + "。"); } else { System.out.println("您的Bucket不存在,建立Bucket:" + bucketName + "。"); // 建立Bucket。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init ossClient.createBucket(bucketName); } // 查看Bucket信息。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init BucketInfo info = ossClient.getBucketInfo(bucketName); System.out.println("Bucket " + bucketName + "的信息以下:"); System.out.println("\t數據中心:" + info.getBucket().getLocation()); System.out.println("\t建立時間:" + info.getBucket().getCreationDate()); System.out.println("\t用戶標誌:" + info.getBucket().getOwner()); /*上傳本地圖片*/ //圖片全路徑 String filePath = "G://oss//snow.jpg"; //上傳文件全名稱 String newFileKey = getStringRandom(32)+getContentType(filePath); InputStream inputStream = new FileInputStream(filePath); //上傳流文件 ossClient.putObject(bucketName, "*************/"+newFileKey, inputStream); // 設置URL過時時間爲1小時。 Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000); // 生成以GET方法訪問的簽名URL,訪客能夠直接經過瀏覽器訪問相關內容。 URL url = ossClient.generatePresignedUrl(bucketName, "*************/"+newFileKey, expiration); System.out.println(url); /*遍歷存儲空間*/ // 查看Bucket中的Object。詳細請參看「SDK手冊 > Java-SDK > 管理文件」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket // 指定前綴。 final String keyPrefix = "*************"; // 列舉包含指定前綴的文件。默認列舉100個文件。 ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix)); List<OSSObjectSummary> sums = objectListing.getObjectSummaries(); System.out.println("您有如下Object:"); for (OSSObjectSummary s : sums) { System.out.println("\t" + s.getKey()); } /*下載文件到本地*/ // 下載OSS文件到本地文件。若是指定的本地文件存在會覆蓋,不存在則新建。 ossClient.getObject(new GetObjectRequest(bucketName, "*************/"+newFileKey), new File("G://oss//"+newFileKey)); /*刪除空間文件*/ // 刪除Object。詳細請參看「SDK手冊 > Java-SDK > 管理文件」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket ossClient.deleteObject(bucketName, newFileKey); System.out.println("刪除Object:" + newFileKey + "成功。"); } catch (OSSException oe) { oe.printStackTrace(); } catch (ClientException ce) { ce.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { ossClient.shutdown(); } logger.info("Completed"); } /** *生成隨機數字和字母 * @param length 長度 * @return 隨機字符串 */ public static String getStringRandom(int length) { String val = ""; Random random = new Random(); //參數length,表示生成幾位隨機數 for(int i = 0; i < length; i++) { String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num"; //輸出字母仍是數字 if( "char".equalsIgnoreCase(charOrNum) ) { //輸出是大寫字母仍是小寫字母 int temp = random.nextInt(2) % 2 == 0 ? 65 : 97; val += (char)(random.nextInt(26) + temp); } else if( "num".equalsIgnoreCase(charOrNum) ) { val += String.valueOf(random.nextInt(10)); } } return val; } /** * 經過文件名判斷並獲取OSS服務文件上傳時文件的contentType * @param fileName 文件名 * @return 文件的contentType */ public static String getContentType(String fileName){ //文件的後綴名 String fileExtension = fileName.substring(fileName.lastIndexOf(".")); if(".bmp".equalsIgnoreCase(fileExtension)) { return ".bmp"; } if(".gif".equalsIgnoreCase(fileExtension)) { return ".gif"; } if(".jpeg".equalsIgnoreCase(fileExtension)) { return ".jpeg"; } if(".jpg".equalsIgnoreCase(fileExtension)) { return ".jpg"; } if(".png".equalsIgnoreCase(fileExtension) ) { return ".png"; } //默認返回類型 return ".jpeg"; } }
package com.aliyun.oss.demo; import com.aliyun.oss.ClientException; import com.aliyun.oss.OSSClient; import com.aliyun.oss.OSSException; import com.aliyun.oss.model.*; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import java.util.List; /** * @BelongsProject: maven-demo * @BelongsPackage: com.aliyun.oss.demo * @Author: Guoyh * @CreateTime: 2018-10-11 11:45 * @Description: oss文件操做管理 */ public class ListObjects { static Logger logger = Logger.getLogger(HelloOSS.class); // endpoint是訪問OSS的域名。若是您已經在OSS的控制檯上 建立了Bucket,請在控制檯上查看域名。 // endpoint的格式形如「http://oss-cn-hangzhou.aliyuncs.com/」,注意http://後不帶bucket名稱, // 好比「http://bucket-name.oss-cn-hangzhou.aliyuncs.com」,是錯誤的endpoint,請去掉其中的「bucket-name」。 private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com"; // accessKeyId和accessKeySecret是OSS的訪問密鑰,您能夠在控制檯上建立和查看 // 注意:accessKeyId和accessKeySecret先後都沒有空格,從控制檯複製時請檢查並去除多餘的空格。 private static String accessKeyId = ""; private static String accessKeySecret = ""; // Bucket用來管理所存儲Object的存儲空間, // Bucket命名規範以下:只能包括小寫字母,數字和短橫線(-),必須以小寫字母或者數字開頭,長度必須在3-63字節之間。 private static String bucketName = ""; public static void main(String[] args) { // 日誌配置,OSS Java SDK使用log4j記錄錯誤信息。示例程序會在工程目錄下生成「oss-demo.log」日誌文件,默認日誌級別是INFO。 // 日誌的配置文件是「conf/log4j.properties」,若是您不須要日誌,能夠沒有日誌配置文件和下面的日誌配置。 PropertyConfigurator.configure("conf/log4j.properties"); logger.info("Started"); // 生成OSSClient,您能夠指定一些參數, OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); try { /* 校驗存儲空間 */ // 判斷Bucket是否存在。 if (ossClient.doesBucketExist(bucketName)) { System.out.println("您已經建立Bucket:" + bucketName + "。"); } else { System.out.println("您的Bucket不存在,建立Bucket:" + bucketName + "。"); // 建立Bucket。 ossClient.createBucket(bucketName); } // 查看Bucket信息。 BucketInfo info = ossClient.getBucketInfo(bucketName); System.out.println("Bucket " + bucketName + "的信息以下:"); System.out.println("\t數據中心:" + info.getBucket().getLocation()); System.out.println("\t建立時間:" + info.getBucket().getCreationDate()); System.out.println("\t用戶標誌:" + info.getBucket().getOwner()); // // /*遍歷存儲空間*/ // // 查看Bucket中的Object。 // // 指定前綴。列舉文件 // final String keyPrefix = "********"; // // 列舉包含指定前綴的文件。默認列舉100個文件。 // ObjectListing objectListingWithPrefix = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix)); // List<OSSObjectSummary> sums = objectListingWithPrefix.getObjectSummaries(); // System.out.println("您有如下Object:"); // for (OSSObjectSummary s : sums) { // System.out.println("\t" + s.getKey()); // } // System.out.println("\t" + "-----------------------------------------------------"); // // 列舉文件。 若是不設置KeyPrefix,則列舉存儲空間下全部的文件。KeyPrefix,則列舉包含指定前綴的文件。 // ObjectListing objectListingOne = ossClient.listObjects(bucketName); // List<OSSObjectSummary> sumsOne = objectListingOne.getObjectSummaries(); // for (OSSObjectSummary s : sumsOne) { // System.out.println("\t" + s.getKey()); // } // System.out.println("\t" + "-----------------------------------------------------"); // // // // 設置最大個數。 // final int maxKeys = 200; // // 列舉文件。 // ObjectListing objectListingWithMaxKeys = ossClient.listObjects(new ListObjectsRequest(bucketName).withMaxKeys(maxKeys)); // List<OSSObjectSummary> sumsPlus = objectListingWithMaxKeys.getObjectSummaries(); // for (OSSObjectSummary s : sumsPlus) { // System.out.println("\t" + s.getKey()); // } // System.out.println("\t" + "-----------------------------------------------------"); //分頁列舉全部文件 final int maxKey = 200; String nextMarker = null; ObjectListing objectListing; do { objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withMarker(nextMarker).withMaxKeys(maxKey)); List<OSSObjectSummary> sumsx = objectListing.getObjectSummaries(); for (OSSObjectSummary s : sumsx) { System.out.println("\t" + s.getKey()); } nextMarker = objectListing.getNextMarker(); } while (objectListing.isTruncated()); System.out.println("\t" + "-----------------------------------------------------"); // // // // 構造ListObjectsRequest請求。 // ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName); // // 列出文件。 // ObjectListing listing = ossClient.listObjects(listObjectsRequest); // // 遍歷全部文件。 // System.out.println("Objects:"); // for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) { // System.out.println(objectSummary.getKey()); // } // // 遍歷全部commonPrefix。 // System.out.println("CommonPrefixes:"); // for (String commonPrefix : listing.getCommonPrefixes()) { // System.out.println(commonPrefix); // } } catch (OSSException oe) { oe.printStackTrace(); } catch (ClientException ce) { ce.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { ossClient.shutdown(); } logger.info("Completed"); } }
package com.aliyun.oss.demo; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*; import java.net.URL; import java.util.List; import java.util.Date; import java.util.Random; import com.aliyun.oss.ClientException; import com.aliyun.oss.OSSClient; import com.aliyun.oss.OSSException; import com.aliyun.oss.model.*; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import javax.swing.*; public class UploadPictures2OSS extends JFrame implements ActionListener { static Logger logger = Logger.getLogger(UploadPictures2OSS.class); // endpoint是訪問OSS的域名。若是您已經在OSS的控制檯上 建立了Bucket,請在控制檯上查看域名。 // 若是您尚未建立Bucket,endpoint選擇請參看文檔中心的「開發人員指南 > 基本概念 > 訪問域名」, // 連接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region // endpoint的格式形如「http://oss-cn-hangzhou.aliyuncs.com/」,注意http://後不帶bucket名稱, // 好比「http://bucket-name.oss-cn-hangzhou.aliyuncs.com」,是錯誤的endpoint,請去掉其中的「bucket-name」。 private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com"; // accessKeyId和accessKeySecret是OSS的訪問密鑰,您能夠在控制檯上建立和查看, // 建立和查看訪問密鑰的連接地址是:https://ak-console.aliyun.com/#/。 // 注意:accessKeyId和accessKeySecret先後都沒有空格,從控制檯複製時請檢查並去除多餘的空格。 private static String accessKeyId = ""; private static String accessKeySecret = ""; // Bucket用來管理所存儲Object的存儲空間,詳細描述請參看「開發人員指南 > 基本概念 > OSS基本概念介紹」。 // Bucket命名規範以下:只能包括小寫字母,數字和短橫線(-),必須以小寫字母或者數字開頭,長度必須在3-63字節之間。 private static String bucketName = ""; JButton jb = new JButton("選擇文件"); public static void main(String[] args) { // TODO 自動生成的方法存根 new UploadPictures2OSS(); } public UploadPictures2OSS() { jb.setActionCommand("open"); //設置按鈕顏色 jb.setBackground(Color.LIGHT_GRAY); //創建容器使用邊界佈局 this.getContentPane().add(jb, BorderLayout.SOUTH); jb.addActionListener(this); this.setTitle("標題"); this.setSize(333, 288); this.setLocation(200, 200); //顯示窗口true this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } @Override public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("open")) { JFileChooser jf = new JFileChooser(); //顯示打開的文件對話框 jf.showOpenDialog(this); //使用文件類獲取選擇器選擇的文件 File f = jf.getSelectedFile(); //返回路徑名 String s = f.getAbsolutePath(); //JOptionPane彈出對話框類,顯示絕對路徑名 //JOptionPane.showMessageDialog(this, s, "標題",JOptionPane.WARNING_MESSAGE); uploadPicture(s); } } public void uploadPicture(String path) { // 日誌配置,OSS Java SDK使用log4j記錄錯誤信息。示例程序會在工程目錄下生成「oss-demo.log」日誌文件,默認日誌級別是INFO。 // 日誌的配置文件是「conf/log4j.properties」,若是您不須要日誌,能夠沒有日誌配置文件和下面的日誌配置。 PropertyConfigurator.configure("conf/log4j.properties"); logger.info("Started"); // 生成OSSClient,您能夠指定一些參數,詳見「SDK手冊 > Java-SDK > 初始化」, // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); try { /* 校驗存儲空間 */ // 判斷Bucket是否存在。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init if (ossClient.doesBucketExist(bucketName)) { System.out.println("您已經建立Bucket:" + bucketName + "。"); } else { System.out.println("您的Bucket不存在,建立Bucket:" + bucketName + "。"); // 建立Bucket。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init ossClient.createBucket(bucketName); } // 查看Bucket信息。詳細請參看「SDK手冊 > Java-SDK > 管理Bucket」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init BucketInfo info = ossClient.getBucketInfo(bucketName); System.out.println("Bucket " + bucketName + "的信息以下:"); System.out.println("\t數據中心:" + info.getBucket().getLocation()); System.out.println("\t建立時間:" + info.getBucket().getCreationDate()); System.out.println("\t用戶標誌:" + info.getBucket().getOwner()); /*上傳本地圖片*/ //圖片全路徑 String filePath = path; //上傳文件全名稱 String newFileKey = getStringRandom(32) + getContentType(filePath); InputStream inputStream = new FileInputStream(filePath); //上傳流文件 ossClient.putObject(bucketName, "*********/" + newFileKey, inputStream); // 設置URL過時時間爲1小時。 Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000); // 生成以GET方法訪問的簽名URL,訪客能夠直接經過瀏覽器訪問相關內容。 URL url = ossClient.generatePresignedUrl(bucketName, "*********/" + newFileKey, expiration); System.out.println(url); /*遍歷存儲空間*/ // 查看Bucket中的Object。詳細請參看「SDK手冊 > Java-SDK > 管理文件」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket // 指定前綴。 final String keyPrefix = "*********"; // 列舉包含指定前綴的文件。默認列舉100個文件。 ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix)); List<OSSObjectSummary> sums = objectListing.getObjectSummaries(); System.out.println("您有如下Object:"); for (OSSObjectSummary s : sums) { System.out.println("\t" + s.getKey()); } /*下載文件到本地*/ //下載OSS文件到本地文件。若是指定的本地文件存在會覆蓋,不存在則新建。 // ossClient.getObject(new GetObjectRequest(bucketName, "*********/"+newFileKey), new File("G://oss//"+newFileKey)); /*刪除空間文件*/ // 刪除Object。詳細請參看「SDK手冊 > Java-SDK > 管理文件」。 // 連接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket // ossClient.deleteObject(bucketName, "*********/"+newFileKey); // System.out.println("刪除Object:" + newFileKey + "成功。"); } catch (OSSException oe) { oe.printStackTrace(); } catch (ClientException ce) { ce.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { ossClient.shutdown(); } logger.info("Completed"); } /** * 生成隨機數字和字母拼接的字符串 * @param length 返回字符串長度 * @return * @author Guoyh * @date 2018/10/10 12:25 */ public static String getStringRandom(int length) { String val = ""; Random random = new Random(); //參數length,表示生成幾位隨機數 for (int i = 0; i < length; i++) { String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num"; //輸出字母仍是數字 if ("char".equalsIgnoreCase(charOrNum)) { //輸出是大寫字母仍是小寫字母 int temp = random.nextInt(2) % 2 == 0 ? 65 : 97; val += (char) (random.nextInt(26) + temp); } else if ("num".equalsIgnoreCase(charOrNum)) { val += String.valueOf(random.nextInt(10)); } } return val; } /** * 經過文件名判斷並獲取OSS服務文件上傳時文件的contentType * * @param fileName 文件名 * @return 文件的contentType */ public static String getContentType(String fileName) { //文件的後綴名 String fileExtension = fileName.substring(fileName.lastIndexOf(".")); if (".bmp".equalsIgnoreCase(fileExtension)) { return ".bmp"; } if (".gif".equalsIgnoreCase(fileExtension)) { return ".gif"; } if (".jpeg".equalsIgnoreCase(fileExtension)) { return ".jpeg"; } if (".jpg".equalsIgnoreCase(fileExtension)) { return ".jpg"; } if (".png".equalsIgnoreCase(fileExtension)) { return ".png"; } //默認返回類型 return ".jpeg"; } }