java开发AmazonS3对象存储的工具类
来源:互联网 发布:php人脸识别系统实现 编辑:程序博客网 时间:2024/06/14 04:09
上两节说了文档上默认不用证书的方式操作对象,但大部分时候出于安全考虑是要用到证书认证的。下面就是对这种情况下的对象操作。
1.引入pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zhanglf</groupId> <artifactId>AmazonS3</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>AmazonS3</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- 从 1.9.0 版开始,AWS支持可以导入单个组件或整个开发工具包两种maven工程引入依赖的方式。 Java 的 AWS 开发工具包的 Maven 材料清单 (BOM), --> <!-- 这将确保您指定的所有模块使用相同版本的开发工具包而且相互兼容。要使用 BOM,请向应用程序的 pom.xml 文件中添加一个 <dependencyManagement> --> <!-- 部分,将 aws-java-sdk-bom 作为依赖项添加并指定要使用的开发工具包的版本: --> <dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.11.125</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- 现在,可以从您的应用程序中所使用的开发工具包中选择单个模块。由于您已经在 BOM 中声明了开发工具包版本,因此无需为每个组件都指定版本号。 --> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-dynamodb</artifactId> </dependency> </dependencies></project>
2.查询存储对象的工具类,有三种方法
package com.zhanglf.aws;import com.amazonaws.AmazonClientException;import com.amazonaws.AmazonServiceException;import com.amazonaws.ClientConfiguration;import com.amazonaws.Protocol;import com.amazonaws.auth.AWSCredentials;import com.amazonaws.auth.AWSStaticCredentialsProvider;import com.amazonaws.auth.BasicAWSCredentials;import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration;import com.amazonaws.regions.Regions;import com.amazonaws.services.s3.AmazonS3;import com.amazonaws.services.s3.AmazonS3Client;import com.amazonaws.services.s3.AmazonS3ClientBuilder;import com.amazonaws.services.s3.model.ListObjectsV2Request;import com.amazonaws.services.s3.model.ListObjectsV2Result;import com.amazonaws.services.s3.model.ObjectListing;import com.amazonaws.services.s3.model.S3Object;import com.amazonaws.services.s3.model.S3ObjectSummary;public class AWSListTest extends AwsConfig { public void listObject(){ AWSCredentials credentials=new BasicAWSCredentials(accessKey,secretKey); ClientConfiguration clientConfig=new ClientConfiguration(); try { clientConfig.setProtocol(Protocol.HTTP); AmazonS3Client conn=new AmazonS3Client(credentials,clientConfig); conn.setEndpoint(ENDPOINT); ObjectListing objects = conn.listObjects(bucketName); do { for(S3ObjectSummary objectSummary:objects.getObjectSummaries()){ System.out.println(objectSummary.getKey()); } } while (objects.isTruncated()); } catch (AmazonServiceException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (AmazonClientException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void listObjectWithClientBuilder(){ AWSCredentials credentials=new BasicAWSCredentials(accessKey,secretKey); ClientConfiguration clientConfig=new ClientConfiguration(); try { clientConfig.setProtocol(Protocol.HTTP); AmazonS3ClientBuilder builder=AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials)); EndpointConfiguration endpointConfiguration=new EndpointConfiguration(ENDPOINT,Regions.AP_NORTHEAST_1.getName()); builder.setEndpointConfiguration(endpointConfiguration); AmazonS3 conn=builder.build(); ListObjectsV2Request req=new ListObjectsV2Request().withBucketName(bucketName); ListObjectsV2Result result; do{ result= conn.listObjectsV2(req); for(S3ObjectSummary objectSummary :result.getObjectSummaries()){ System.out.println(objectSummary.getKey()); } }while(result.isTruncated()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void getObjectByKey(String key){ AWSCredentials credentials=new BasicAWSCredentials(accessKey,secretKey); ClientConfiguration clientConfig=new ClientConfiguration(); try { clientConfig.setProtocol(Protocol.HTTP); AmazonS3ClientBuilder builder=AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials)); EndpointConfiguration endpointConfiguration=new EndpointConfiguration(ENDPOINT,Regions.AP_NORTHEAST_1.getName()); builder.setEndpointConfiguration(endpointConfiguration); AmazonS3 conn=builder.build(); S3Object object = conn.getObject(bucketName, key); System.out.println(object.getKey()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
3.将对象上传到AWS的工具类,也有三种方法
package com.zhanglf.aws;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.net.URL;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import com.amazonaws.ClientConfiguration;import com.amazonaws.Protocol;import com.amazonaws.auth.AWSCredentials;import com.amazonaws.auth.AWSStaticCredentialsProvider;import com.amazonaws.auth.BasicAWSCredentials;import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration;import com.amazonaws.regions.Region;import com.amazonaws.regions.Regions;import com.amazonaws.services.s3.AmazonS3;import com.amazonaws.services.s3.AmazonS3Client;import com.amazonaws.services.s3.AmazonS3ClientBuilder;import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;import com.amazonaws.services.s3.model.GetObjectRequest;import com.amazonaws.services.s3.model.ObjectMetadata;import com.amazonaws.services.s3.model.PutObjectRequest;import com.amazonaws.services.s3.model.S3Object;public class AWSUploadTest extends AwsConfig { private File file = new File("D:/root/zlf/20171108/yuanzougaofei.mp3"); /** * * @param key 指定的上傳目録 * @throws FileNotFoundException */ public void uploadObject(String key) throws FileNotFoundException { AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); ClientConfiguration clientConfig = new ClientConfiguration(); clientConfig.setProtocol(Protocol.HTTP); AmazonS3Client conn = new AmazonS3Client(credentials, clientConfig); conn.setEndpoint(ENDPOINT); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentLength(file.length()); metadata.addUserMetadata("managecom", "1"); metadata.addUserMetadata("name", "zhanglf"); metadata.addUserMetadata("pro", "hn"); FileInputStream fi = new FileInputStream(file); conn.putObject(bucketName, key, fi, metadata); GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(bucketName, key); URL url = conn.generatePresignedUrl(urlRequest); System.out.println(url.toString()); } public void uploadObjectWithClientBuilder(String key) throws FileNotFoundException{ AWSCredentials credentials=new BasicAWSCredentials(accessKey,secretKey); ClientConfiguration clientConfig=new ClientConfiguration(); clientConfig.setProtocol(Protocol.HTTP); AmazonS3ClientBuilder builder=AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials)); EndpointConfiguration endpointConfiguration=new EndpointConfiguration(ENDPOINT,Regions.AP_NORTHEAST_1.getName()); builder.setEndpointConfiguration(endpointConfiguration); AmazonS3 conn=builder.build(); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentLength(file.length()); metadata.addUserMetadata("managecom", "1"); metadata.addUserMetadata("name", "zhanglf"); metadata.addUserMetadata("pro", "hn"); FileInputStream fi = new FileInputStream(file); conn.putObject(bucketName, key, fi, metadata); GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(bucketName, key); URL url = conn.generatePresignedUrl(urlRequest); System.out.println(url.toString()); } public void uploadToS3(String key){ AmazonS3 s3=new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey)); Region usWest2=Region.getRegion(Regions.US_WEST_2); s3.setRegion(usWest2); s3.setEndpoint(ENDPOINT); s3.putObject(new PutObjectRequest(bucketName, key, file)); S3Object object = s3.getObject(new GetObjectRequest(bucketName, key)); GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(bucketName, key); Date expirationDate =null; try { expirationDate=new SimpleDateFormat("yyyy-MM-dd").parse("2017-11-23"); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } urlRequest.setExpiration(expirationDate); //生成url URL url = s3.generatePresignedUrl(urlRequest); System.out.println(url.toString()); }}public void deleteObjectWithClientBuilder(String key){ AWSCredentials credentials=new BasicAWSCredentials(accessKey,secretKey); ClientConfiguration clientConfig=new ClientConfiguration(); clientConfig.setProtocol(Protocol.HTTP); AmazonS3ClientBuilder builder=AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials)); EndpointConfiguration endpointConfiguration=new EndpointConfiguration(ENDPOINT,Regions.AP_NORTHEAST_1.getName()); builder.setEndpointConfiguration(endpointConfiguration); AmazonS3 conn=builder.build(); conn.deleteObject(bucketName, key); }
阅读全文
0 0
- java开发AmazonS3对象存储的工具类
- AmazonS3文档——对象存储的用法之《存储桶操作》
- AmazonS3文档——对象存储的用法之《对象操作》
- AmazonS3 使用 AWS SDK for Java
- SharedPreferences存储对象工具类
- java对象的存储
- java对象的存储
- java对象的存储
- Java对象的存储
- java对象的存储
- Java 对象的存储区域
- Java 对象的存储位置
- java 对象的存储形式
- Java中对象的存储
- java对象内存的存储
- 使用rms工具类存储对象
- day11<Java开发工具&常见对象>
- java的web开发分页工具类
- File相关操作,java.nio.file.*
- 微信公众号的配置方法
- LWC 57:723. Candy Crush
- 采用Signature Scheme v2签名方式的APK预置失败
- oracle exp导出错误(EXP-00056)
- java开发AmazonS3对象存储的工具类
- 关于线程和进程
- hadoop学习笔记-6-倒排索引InverseIndex
- c++:多字节转宽字符(vs15+python2.7.11 32bit)
- 操作系统与多核处理器
- html5的拖放
- 深入索引实现原理
- prop应用
- 灰度图转伪彩色图