上篇整理了阿里云OSS JAVA SDK实现文件的上传下载,今天记录一下AWS S3
OSS: Object Storage Service,OSS 对象存储服务
S3: Amazon Simple Storage Service,亚马逊简单存储服务
具体的实现:
1. 引入Maven依赖
<dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> <version>1.11.336</version> </dependency>
2. 配置项
S3:
region: us-east-1
accessKeyId: ***********
accessKeySecret: ********
bucketName: my-bucket
3. 创建AmazonS3对象
@Value("${S3.accessKeyId}") private String accessKeyId; @Value("${S3.accessKeySecret}") private String accessKeySecret; @Value("${S3.bucketName}") private String bucketName; @Value("${S3.region}") private String regionName;
public AmazonS3 amazonS3() { AWSCredentials awsCredentials = new BasicAWSCredentials(accessKeyId, accessKeySecret); AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCredentials)); //设置S3的地区 builder.setRegion(regionName); AmazonS3 s3Client = builder.build(); return s3Client; }
4. 实现上传下载
上传:
public PutObjectResult upload(String fileName, InputStream inputStream) throws IOException { AmazonS3 amazonS3Client = this.amazoneS3(); ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setContentType("plain/text"); objectMetadata.setContentLength(Long.valueOf(inputStream.available())); PutObjectResult putObjectRequest = amazonS3Client.putObject(new PutObjectRequest(bucketName, fileName, inputStream, objectMetadata)); return putObjectRequest ; }
下载:
public InputStream download(String key){ S3Object object = this.s3Client().getObject(new GetObjectRequest(bucketName, key)); return object.getObjectContent(); }
照旧,官方的帮助文档必不可少:
Performing Operations on Amazon S3 Objects:
https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/examples-s3-objects.html