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

Java spring boot 使用阿里OSS实现图片上传,附源码

在实际开发中,有上传文件的需求,除了可以使用上传到本地服务器,也可以选中上传到阿里OSS进行存储,这里将从阿里云控制台创建桶开始进行实现

阿里oss部分

获取key+secret

首页右上角我的-选中“AccessKey”

会有如下弹框,选择继续

选择创建(有上限,有2个key会置灰),拿到key+secret后需要自己保存好,连接OSS是必须要用到的,只显示这一次,丢失无法找回

创建桶

搜索“OSS对象存储”

选择控制台,创建,可以直接创建,或是进入列表再创建

快捷创建输入bucket名,(名称不可重复)
创建好后需要设置下阻止公共访问和读写权限,都打开

Java工具类

数据源

  • 这里需要四项数据endpoint、accessKeyId、accessKeySecret、bucketName,可以直接在工具类中编写,为了后续便于修改,可以写在配置文件中
# 名称可以进行自定义aliyun.oss.endpoint=https://oss-cn-beijing.aliyuncs.comaliyun.oss.accessKeyId=aliyun.oss.accessKeySecret=aliyun.oss.bucketName=
  • 可以将四项数据抽取到一个类中,通过注解实现调用配置文件中的数据
importlombok.Data;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.stereotype.Component;@Component@ConfigurationProperties(prefix="aliyun.oss")@DatapublicclassAliOSSProperties{//直接通过属性去properties文件中匹配值,调用时使用get方法//oss终端地址privateStringendpoint;//key-idprivateStringaccessKeyId;//key-secretprivateStringaccessKeySecret;//创建的桶名privateStringbucketName;}
  • 工具类
importcom.aliyun.oss.OSS;importcom.aliyun.oss.OSSClientBuilder;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Component;importorg.springframework.web.multipart.MultipartFile;importjava.io.IOException;importjava.io.InputStream;importjava.util.UUID;//添加容器控制 进行properties读值@ComponentpublicclassOSSUtils{/*@Value("${aliyun.oss.endpoint}") //可以通过@value注解,直接获取到配置文件中的数据 private String endpoint = "";*///通过实体类进行数据的获取,通过get方法@AutowiredprivateAliOSSPropertiesproperties;//将上传的文件,作为参数进行传递publicStringupload(MultipartFilefile)throwsIOException{//获取文件输入流InputStreaminputStream=file.getInputStream();//生成新的文件名,通过uuid避免文件名重复,并拼接源文件的后缀名StringnewFileName=UUID.randomUUID()+file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));//上传图片到客户端,先创建客户端OSSossClient=newOSSClientBuilder().build(properties.getEndpoint(),properties.getAccessKeyId(),properties.getAccessKeySecret());//进行上传ossClient.putObject(properties.getBucketName(),newFileName,inputStream);//生成可以访问上传文件的地址StringBufferstringBuffer=newStringBuffer(properties.getEndpoint());stringBuffer.insert(8,properties.getBucketName()+".").append("/").append(newFileName);ossClient.shutdown();returnstringBuffer.toString();}}
工具类创建好后,直接调用使用就可以了,String upload = ossUtils.upload(上传的文件参数名); “upload”是返回的文件可访问地址
http://www.jsqmd.com/news/1093156/

相关文章:

  • 计算机二级基础知识-定点数-浮点数-反码等基础知识学习
  • 想找靠谱的防水轨道插座服务商?这份实用挑选攻略帮你少走弯路
  • NoMachine远程桌面实战:从零安装到高效连接
  • Java SE 和 Java EE 的核心功能模块
  • 关于基于优先搜索的路径规划算法性能分析的技术7
  • 硕晟OntoCore公众号文章-Markdown版
  • Python实现Paillier同态加密:从原理到工程实践
  • 密码学h面试大法---h(自用版)更新中~(^v^)
  • 【国产大模型突围真相】:DeepSeek-R1在C-Eval 92.7分背后的技术路径 vs ChatGPT-4o在中文法律问答中37%幻觉率的根源分析
  • 三步搞定微信QQ防撤回:让你的重要消息不再消失
  • 从零到一:用nssm将任意应用封装为Windows服务
  • (InputStream的源码、FilterInputStream源码、BufferedInputStream的源码解读前言)AtomicReferenceFieldUpdater.class和Sys
  • ingress-nginx
  • 实时更新策略
  • 格子达的在线预览上传的word论文很多bug,明明没有线的,却多出了线,强烈建议系统抓紧补足漏洞!!!
  • 小程序WIFI连接实战:跨平台兼容性处理与iOS跳转优化方案
  • Spring Boot 缓存注解执行逻辑
  • FanControl终极指南:如何在Windows上实现智能风扇控制,告别噪音烦恼
  • 用Rust给Python写一个高性能扩展模块(PyO3实战)
  • 终极指南:如何用Kafka-UI轻松管理Apache Kafka集群
  • 昇腾310B加持的算力矩阵:香橙派四款AI产品全面解析
  • 论文阅读笔记 | Thinking with Video: Video Generation as a Promising Multimodal Reasoning Paradigm
  • Spring 事务总踩坑?一文吃透事务管理 + 数据访问底层源码与生产最佳实践
  • 在线教程丨32K上下文一次解析数十页文档,百度开源Unlimited OCR,重构长文档复杂场景
  • TMS320F28379D中断系统:从外设到CPU的实战配置指南
  • LPDDR5 ZQ校准实战:从背景校准到命令模式的深度解析
  • RAG 上下文压缩利器 headroom:深度架构解析与本地实战指南
  • [Android] 只音-免费无损音乐神器-全网曲库随心下
  • 从DCB到OSB:北斗多频多系统硬件延迟改正的演进与实践
  • 从Demo到SaaS:ChatGPT聊天机器人商业化闭环设计(含用户身份鉴权、计费埋点、审计日志)