上两节说了文档上默认不用证书的方式操作对象,但大部分时候出于安全考虑是要用到证书认证的。下面就是对这种情况下的对象操作。
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 blocke.printStackTrace();} catch (AmazonClientException e) {// TODO Auto-generated catch blocke.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 blocke.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 blocke.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 blocke.printStackTrace();}urlRequest.setExpiration(expirationDate);//生成urlURL 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);}

java开发AmazonS3对象存储的工具类相关推荐

  1. java开发中spring常用的工具类

    内置的resouce类型 UrlResource ClassPathResource FileSystemResource ServletContextResource InputStreamReso ...

  2. tp6腾讯云、七牛云对象存储的工具类以及异步上传

    composer安装 composer require lorine/oss-utils 代码: use Lorine\OssUtils\OssService;$config = ['ak' => ...

  3. java中将数字颠倒的工具类,java开发中常用的数字工具类

    import java.math.BigDecimal; import org.apache.commons.lang.RandomStringUtils; public class NumberUt ...

  4. 一个集成阿里云、腾讯云、七牛云对象存储的工具类

    1.安装composer扩展 composer require china-lishuo/oss-utils 2.这是图片上传到云存储+cdn /*** @param Request $request ...

  5. Java通用工具类之按对象属性排序工具类

    本工具类为按对象属性排序工具类,实现的功能: 1.按对象的一个属性和多个属性进行排序. 2.按对象属性正序和倒序排列. 3.完美支持int等基础类和Integer等包装类. 4.完美支持属性为实现了C ...

  6. 【转】 Android快速开发系列 10个常用工具类 -- 不错

    原文网址:http://blog.csdn.net/lmj623565791/article/details/38965311 转载请标明出处:http://blog.csdn.net/lmj6235 ...

  7. Android快速开发系列 10个常用工具类

    目录(?)[+] 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自[张鸿洋的博客] 打开大家手上的项目,基 ...

  8. (10)Java泛型-Map集合-集合框架工具类-可变参数-静态导入

    -- 部分1.5新特性Java泛型-Map集合-集合框架工具类 泛型 概述: JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 对于泛型可以这样理解: 没有使用泛型时,只要是对 ...

  9. Java开发常用包、接口和类

    一.JDK中常用包 1.java.lang 这个是系统的基础类: 2.java.io 这里面是所有输入输出有关的类,比如文件操作等: 3.java.nio 为了完善 io 包中的功能,提高 io 包中 ...

最新文章

  1. SQL(基于MySQL)——LIMIT用法
  2. 偏移出来的数据不准_独家解读!京东高可用分布式流数据存储的架构设计
  3. VTK:Points之RadiusOutlierRemoval
  4. Android高仿大众点评(带服务端)
  5. C#网络类智能开关控制板实例
  6. linux内核那些事之 VMA Gap
  7. 盲人方便的使用计算机输入文字,中文信息学报盲人用计算机软件系统中的语音和自然语言处理技术Ξ.PDF...
  8. 【Java从0到架构师】Spring - 整合 MyBatis
  9. VLC 媒体播放器 libmicrodns 库修复 RCE 漏洞
  10. 怎么把ide改成ahci_阳光明媚-将IDE模式更改为AHCI模式的方法(不用重装系统)
  11. 计算关联系数matlab,matlab相关性系数【excel中的相关系数是如何计算出来的?】
  12. 关于二进制的起源,莱布尼茨以及中国伏羲八卦图
  13. windows提升效率神器
  14. springboot读取xml配置文件
  15. 阿诺德给物体加描边_【C4DtoA 27】Arnold渲染器: Toon shader 1/3
  16. 乐视云盘停止视频上传 清查色情盗版信息
  17. Artemis集群(18)
  18. 【CVPR2020】Detection in Crowded Scenes: One Proposal, Multiple Predictions笔记
  19. 和别人发生矛盾怎么办?一个故事醒悟
  20. 神经网络适用于分类问题的最后一层-Softmax和交叉熵损失介绍及梯度推导

热门文章

  1. 用python写网络爬虫
  2. WEB APP 调用相册上传和拍照上传的实现
  3. 为Config文件提供Application级别的设置读写
  4. Android studio中全屏显示
  5. android studio 提示ABIs [arm64-v8a,armeabi-v7a,armeabi] set by ‘android.injected.build.abi’ gradle fla
  6. 中南林业科技大学计算机挂科,中南林业科技大学又出能辅导高数的“扫地僧”...
  7. 张云雷看过的电影-生化危机诅咒
  8. 吃瓜教程task03 第4章 决策树
  9. Win11上Pytorch的安装并在Pycharm上调用PyTorch最新超详细过程并附详细的系统变量添加过程,可解决pycharm中pip不好使的问题
  10. 格式化日期——农历转换