阿里云oss图片上传

迈不过友情╰ 2022-10-08 02:28 429阅读 0赞

背景

上周接到一个新的需求,要在客户端上报图片信息,以前是存在七牛上,现在要全部转到阿里云的oss上,然后那周基本都在啃阿里云的官方文档,最后完成了这个需求,现在来分享一下Java开发的SpringBoot项目怎么引入oss并且使用还有我的踩坑经历。

阿里云oss使用

1、先引入maven依赖

  1. <dependency>
  2. <groupId>com.aliyun.oss</groupId>
  3. <artifactId>aliyun-sdk-oss</artifactId>
  4. <version>3.4.2</version>
  5. </dependency>

2、编写配置类获取ossClient对象

  1. @Value("${aliyun.oss.endpoint}")
  2. private String endpoint;
  3. @Value("${aliyun.accessKeyId}")
  4. private String accessKeyId;
  5. @Value("${aliyun.accessKeySecret}")
  6. private String accessKeySecret;
  7. @Bean
  8. public OSSClient ossClient() {
  9. return new OSSClient(endpoint, accessKeyId, accessKeySecret);
  10. }

endpoint:你的endpoint,在阿里云oss控制台可以看到
accessKeyId:你的AccessKey,创建bucketName就可以看到
accessKeySecret:你的SecretKey,创建bucketName就可以看到

3、编写上传图片的代码

  1. @Value("${aliyun.oss.bucketName}")
  2. private String bucketName;
  3. // urlPrefix: http://bucketName.endpoint/,bucketName喝endpoint在阿里云oss控制台都可以看到
  4. @Value("${aliyun.oss.urlPrefix}")
  5. private String urlPrefix;
  6. private static final String[] IMAGE_TYPE = new String[]{
  7. ".jpg", ".jpeg", ".png"};
  8. public void add(FeedbackRequest data) {
  9. // 阿里云oss图片上传
  10. if (data.getFeedbackImgs() != null) {
  11. if (!data.getFeedbackImgs().isEmpty()) {
  12. String fileName = data.getFeedbackImgs().getOriginalFilename();
  13. String filePath = this.getFilePath(fileName);
  14. boolean isImage = false;
  15. for (String type : IMAGE_TYPE) {
  16. if (StringUtils.endsWithIgnoreCase(fileName, type)) {
  17. isImage = true;
  18. break;
  19. }
  20. }
  21. if (!isImage) {
  22. //格式错误
  23. throw new RuntimeException("格式错误,必须是图片格式");
  24. }
  25. try {
  26. ossClient.putObject(bucketName, filePath, new ByteArrayInputStream(data.getFeedbackImgs().getBytes()));
  27. } catch (Exception ex) {
  28. log.error("阿里云oss出错", ex);
  29. }
  30. }
  31. }
  32. }

4、上传完到服务器查看图片

用阿里云oss提供的OSS浏览器,然后根据AccessKey和SecretKey就可以登陆上去查看图片信息
在这里插入图片描述

踩坑提示

上传完图片会生成一个url链接,直接浏览器访问会报“You have no right to access this object because of bucket acl.”,这个是因为创建bucketName的时候RAM访问控制选择为公共读即可解决。

总结

以上就是上周经历的一次阿里云oss图片上传的经历,我已经把业务逻辑全部过滤掉,只剩下阿里云oss的主要代码和流程。在这里主要就是记录我工作上遇到的一些问题的一些记录,希望对你们有所帮助。

PS:对基金感兴趣的可以关注【公众号:牛熊无悔】,每日3点前更新操作,一起吃肉

发表评论

表情:
评论列表 (有 0 条评论,429人围观)

还没有评论,来说两句吧...

相关阅读

    相关 阿里oss图片

    背景 上周接到一个新的需求,要在客户端上报图片信息,以前是存在七牛上,现在要全部转到阿里云的oss上,然后那周基本都在啃阿里云的官方文档,最后完成了这个需求,现在来分享一

    相关 图片阿里oss保存

    互联网新时代,除了纯信息展示类的网站,基本都是有文件上传功能的。但是随着业务的发展,如果上传的文件和数据库都和网站程序源代码放在一起,那是有相当多的弊端的。 1:用户体验比较

    相关 PHP实现图片阿里OSS

           今天博主在实现一个头像上传功能,需要将图片上传至阿里云的OSS,所以也是百度、谷歌了一番,但都不是很管用,所以自己研究了一番,并将上传的方法封装成一个类进行调用,