赞
踩
贴一下依赖吧,仅需要依赖这一个jar包,注意版本,当前是maven中央库的最新版
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.688</version>
</dependency>
接下来就是创建aws相关的对象了
new BasicAWSCredentials(accessKey, accessSecret)
AmazonS3Client.builder()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.withRegion(region)
.build();
try {
if(!checkBucketExists(s3, bucketName)){
createBucket(s3, bucketName);
}
s3.putObject(new PutObjectRequest(bucketName, objectKey, file)
.withCannedAcl(CannedAccessControlList.PublicRead));
GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(bucketName, objectKey);
s3.generatePresignedUrl(urlRequest);
URL url = s3.getUrl(bucketName, objectKey);
return url.toString();
} catch (AmazonClientException ase) {
ase.printStackTrace();
}
上面代码中,最后返回的结果是不包含链接过期等信息的,链接可公开访问,会不会过期未测,才上传
其中还有bucket是否存在的校验,代码如下:
/** * 创建bucket * @param s3 * @param bucketName */ private static void createBucket(AmazonS3 s3, String bucketName) { s3.createBucket(bucketName); } /** * 验证s3上是否存在名称为bucketName的Bucket * @param s3 * @param bucketName * @return */ private static boolean checkBucketExists (AmazonS3 s3, String bucketName) { List<Bucket> buckets = s3.listBuckets(); for (Bucket bucket : buckets) { if (Objects.equals(bucket.getName(), bucketName)) { return true; } } return false; }
到此结束,踩的坑,主要是因为aws-java-sdk的版本低了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。