当前位置:   article > 正文

Amazone S3 生成公网链接_amazons3.generatepresignedurl

amazons3.generatepresignedurl

Amazone S3 ,弄好了感觉用起来还行,没弄好神烦

Tip:上传出错,region记录找不到,location xxx的等让人抓头发的问题,第一时间升级版本

贴一下依赖吧,仅需要依赖这一个jar包,注意版本,当前是maven中央库的最新版

<dependency>
	<groupId>com.amazonaws</groupId>
	<artifactId>aws-java-sdk</artifactId>
	<version>1.11.688</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

接下来就是创建aws相关的对象了

  1. 创建认证对象 AWSCredentials
    还有别的方式去创建此对象,比如读当前用户下的.aws配置文件、读环境变量的方式
new BasicAWSCredentials(accessKey, accessSecret)
  • 1
  1. 创建对象 AmazonS3
AmazonS3Client.builder()
				.withCredentials(new AWSStaticCredentialsProvider(credentials))
				.withRegion(region)
				.build();
  • 1
  • 2
  • 3
  • 4
  1. 上传文件,获取访问链接
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();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

上面代码中,最后返回的结果是不包含链接过期等信息的,链接可公开访问,会不会过期未测,才上传

其中还有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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

到此结束,踩的坑,主要是因为aws-java-sdk的版本低了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/707095
推荐阅读
相关标签
  

闽ICP备14008679号