【OSS】工具类
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"; } }
请留下你的足迹...