当前位置: 首页 > news >正文

阿里云对象存储服务OSS

1、引依赖

<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version>
</dependency>
<dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.1</version>
</dependency>
<dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version>
</dependency>

2、配置项

#阿里云OSS
aliyun:oss:endpoint: accessKeyId: accessKeySecret: bucketName: 

3、文件上传工具类

@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSProperties {private String endpoint;private String accessKeyId;private String accessKeySecret;private String bucketName;
}
/*** 阿里云 OSS 工具类*/
@Component
public class AliOSSUtils {@Autowiredprivate AliOSSProperties aliOSSProperties;/*** 实现上传图片到OSS*/public String upload(MultipartFile file) throws IOException {//获取阿里云OSS参数String endpoint = aliOSSProperties.getEndpoint();String accessKeyId = aliOSSProperties.getAccessKeyId();String accessKeySecret = aliOSSProperties.getAccessKeySecret();String bucketName = aliOSSProperties.getBucketName();// 获取上传的文件的输入流InputStream inputStream = file.getInputStream();// 避免文件覆盖String originalFilename = file.getOriginalFilename();String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));//上传文件到 OSSOSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);ossClient.putObject(bucketName, fileName, inputStream);//文件访问路径String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;// 关闭ossClientossClient.shutdown();return url;// 把上传到oss的路径返回}}

4、文件上传两种方式

@Slf4j
@RestController
public class UploadController {@Autowiredprivate AliOSSUtils aliOSSUtils;//本地存储文件/*@PostMapping("/upload")public Result upload(String username , Integer age , MultipartFile image) throws Exception {log.info("文件上传: {}, {}, {}", username, age, image);//获取原始文件名 - 1.jpg  123.0.0.jpgString originalFilename = image.getOriginalFilename();//构造唯一的文件名 (不能重复) - uuid(通用唯一识别码) de49685b-61c0-4b11-80fa-c71e95924018int index = originalFilename.lastIndexOf(".");String extname = originalFilename.substring(index);String newFileName = UUID.randomUUID().toString() + extname;log.info("新的文件名: {}", newFileName);//将文件存储在服务器的磁盘目录中 E:\imagesimage.transferTo(new File("E:\\images\\"+newFileName));return Result.success();}*/@PostMapping("/upload")public Result upload(MultipartFile image) throws IOException {log.info("文件上传, 文件名: {}", image.getOriginalFilename());//调用阿里云OSS工具类进行文件上传String url = aliOSSUtils.upload(image);log.info("文件上传完成,文件访问的url: {}", url);return Result.success(url);}}

http://www.lryc.cn/news/120492.html

相关文章:

  • 第三节:在WORD为应用主窗口下关闭EXCEL的操作(1)
  • mybatis 缓存
  • 分布式Redis详解
  • 揭秘程序员和技师的7大共同点,最后一点绷不住了
  • SQL | 使用函数处理数据
  • 基于Dlib库+SVM+Tensorflow+PyQT5智能面相分析-机器学习算法应用(含全部工程源码)+训练及测试数据集
  • 【Flutter】【packages】simple_animations 简单的实现动画
  • python之matplotlib入门初体验:使用Matplotlib进行简单的图形绘制
  • [Linux kernel] [ARM64] boot 流程梳理
  • 重建二叉树
  • 支付整体架构
  • 百度智能云:千帆大模型平台接入Llama 2等33个大模型,上线103个Prompt模板
  • 烦人的幻灯片——拓扑排序
  • 无涯教程-Perl - ord函数
  • Python爬虫:js逆向调式操作及调式中遇到debugger问题
  • HTML网页制作技巧:打造出色的用户体验
  • 探究使用HTTP代理ip后无法访问网站的原因与解决方案
  • SpringBoot 全局异常处理进阶
  • 数据结构(一):顺序表详解
  • 【周末闲谈】人工智能热潮下的AIGC到底指的是什么?
  • sklearn垃圾邮件分类
  • UI美工设计岗位的工作职责
  • ES6链判断运算符(?.)的正确打开方式
  • 删除块参照 删除块定义
  • 机器学习笔记:李宏毅ChatGPT:生成式学习的两种策略
  • React 组件防止冒泡方法
  • MAUI+Blazor 如何开启浏览器调试工具
  • 【Spring MVC】Spring MVC基于注解的程序开发
  • 前端探索之旅
  • “冰箭卫士·IP发布会”首次亮相第14届海峡两岸(厦门)文博会