Amazone S3 生成公网链接

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

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

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

<dependency>
	<groupId>com.amazonaws</groupId>
	<artifactId>aws-java-sdk</artifactId>
	<version>1.11.688</version>
</dependency>

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

  1. 创建认证对象 AWSCredentials
    还有别的方式去创建此对象,比如读当前用户下的.aws配置文件、读环境变量的方式
new BasicAWSCredentials(accessKey, accessSecret)
  1. 创建对象 AmazonS3
AmazonS3Client.builder()
				.withCredentials(new AWSStaticCredentialsProvider(credentials))
				.withRegion(region)
				.build();
  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();
}

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

其中还有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的版本低了

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot可以使用Amazon S3进行对象存储。要在Spring Boot中使用Amazon S3,你需要进行以下步骤: 1. 添加Amazon S3的依赖:在你的项目的pom.xml文件中添加Amazon S3的依赖项。你可以在Maven仓库中找到相应的依赖项,然后将其添加到你的pom.xml文件中。 2. 定义一个抽象类:创建一个抽象类来定义与Amazon S3交互的方法。该抽象类可以包含上传文件、授权、删除文件等方法。 3. 实现具体的类:继承抽象类并实现其中的方法。在实现类中,你可以使用AWS SDK for Java来与Amazon S3进行交互。可以使用SDK提供的方法来上传文件、获取授权、删除文件等操作。 4. 在Spring Boot中使用Amazon S3:将实现类引入到你的Spring Boot应用程序中,并使用注解或配置来将其配置为Amazon S3的客户端。你可以在需要使用Amazon S3的地方使用该客户端来执行相应的操作。 总结起来,使用Spring Boot和Amazon S3进行对象存储的步骤是: 1. 添加Amazon S3的依赖。 2. 定义抽象类来定义与Amazon S3交互的方法。 3. 实现具体的类并使用AWS SDK for Java来与Amazon S3进行交互。 4. 在Spring Boot中使用该实现类来执行相应的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SpringBoot整合亚马逊S3](https://blog.csdn.net/u010953816/article/details/123354144)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刺客码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值