AWS S3 JAVA SDK 实现文件上传,下载


上篇整理了阿里云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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM