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