package com.mindskip.xzs.utility.oss; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.IOException; import java.io.InputStream; @Component public class AmazoneS3 { private static String accessKeyId; private static String accessKeySecret; private static String bucketName; private static String regionName; @Value("${S3.accessKeyId}") public void setAccessKeyId(String accessKeyId) { this.accessKeyId = accessKeyId; } @Value("${S3.accessKeySecret}") public void setAccessKeySecret(String accessKeySecret) { this.accessKeySecret = accessKeySecret; } @Value("${S3.bucketName}") public void setBucketName(String bucketName) { this.bucketName = bucketName; } @Value("${S3.region}") public void setRegionName(String regionName) { this.regionName = regionName; } public static String getAccessKeyId() { return accessKeyId; } public static String getAccessKeySecret() { return accessKeySecret; } public static String getBucketName() { return bucketName; } public static String getRegionName() { return regionName; } public AmazonS3 amazonS3() { AWSCredentials awsCredentials = new BasicAWSCredentials(getAccessKeyId(), getAccessKeySecret()); AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCredentials)); //设置S3的地区 builder.setRegion(getRegionName()); AmazonS3 s3Client = builder.build(); return s3Client; } /** * 上传 * @param fileName * @param inputStream * @return * @throws IOException */ public PutObjectResult upload(String fileName, InputStream inputStream) throws IOException { AmazonS3 amazonS3Client = this.amazonS3(); ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setContentType("plain/text"); objectMetadata.setContentLength(Long.valueOf(inputStream.available())); PutObjectResult putObjectRequest = amazonS3Client.putObject(new PutObjectRequest(AmazoneS3.getBucketName(), fileName, inputStream, objectMetadata)); return putObjectRequest ; } /** * 下载 * @param key * @return */ public InputStream download(String key){ S3Object object = this.amazonS3().getObject(new GetObjectRequest(getBucketName(), key)); return object.getObjectContent(); } }