springboot 整合 oss进行文件上传
提示:没开通的先开通
操作OSS云服务
1、进入管理控制台
2、创建bucket
3、设置内容
4、上传文件
5、扫描上传文件
6、查看文件详情
7、点击头像,选择AccessKey管理
8、继续使用AccessKey
9、查看 Secret
10、复制AccessKey ID 和 AccessKey Secret,用于后续的开发配置文件
Java代码操作oss
1、引入依赖
<dependencies><!-- 阿里云oss依赖 --><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId></dependency><!-- 日期工具栏依赖 --><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId></dependency>
</dependencies>
2、配置文件
配置OSS云服务器对应的信息
#服务端口
server.port=8002
#服务名
spring.application.name=service-oss#环境设置:dev、test、prod
spring.profiles.active=dev#阿里云 OSS
#不同的服务器,地址不同
aliyun.oss.file.endpoint=oss-cn-guangzhou.aliyuncs.com
aliyun.oss.file.keyid=LTAI4Fd5zQxTpFnCSX9KpXH8
aliyun.oss.file.keysecret=HsJVK1JYWdHoYfmYzPOZeuRj1XzGgN
#bucket可以在控制台创建,也可以使用java代码创建
aliyun.oss.file.bucketname=guli-edution
3、工具类,注入值
//当项目已启动,spring接口,spring加载之后,执行接口一个方法
@Component
public class ConstantPropertiesUtils implements InitializingBean {//读取配置文件内容@Value("${aliyun.oss.file.endpoint}")private String endpoint;@Value("${aliyun.oss.file.keyid}")private String keyId;@Value("${aliyun.oss.file.keysecret}")private String keySecret;@Value("${aliyun.oss.file.bucketname}")private String bucketName;//定义公开静态常量public static String END_POIND;public static String ACCESS_KEY_ID;public static String ACCESS_KEY_SECRET;public static String BUCKET_NAME;@Overridepublic void afterPropertiesSet() throws Exception {END_POIND = endpoint;ACCESS_KEY_ID = keyId;ACCESS_KEY_SECRET = keySecret;BUCKET_NAME = bucketName;}
}
4、上传文件的controller
@Api("oss文件上传")
@RestController
@RequestMapping("/eduoss")
@CrossOrigin
public class OssController {@Autowiredprivate OssService ossService;/*** 上传头像的方法* @param file* @return*/@PostMapping("/fileoss")public R uploadOssFile(MultipartFile file){//获取上传文件 MultipartFile//返回上传到oss的路径String url = ossService.uploadFileAvatar(file);return R.ok().data("url",url);}
}
5、上传文件的service
@Service
public class OssServiceImpl implements OssService {@Overridepublic String uploadFileAvatar(MultipartFile file) {// 工具类获取值String endpoint = ConstantPropertiesUtils.END_POIND;String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;String bucketName = ConstantPropertiesUtils.BUCKET_NAME;try {// 创建OSS实例。OSS oss = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);//获取上传文件输入流InputStream inputStream = file.getInputStream();//获取文件名称String fileName = file.getOriginalFilename();//1. 在文件名称里面添加随机唯一的值String uuid = UUID.randomUUID().toString().replaceAll("-","");//拼接文件名fileName = uuid + fileName;//2 把文件按照日期进行分类//获取当前日期String newDate = new DateTime().toString("yyyy/MM/dd");//拼接文件名fileName = newDate + "/" + fileName;/*** 调用oss方法实现上传* 第一个参数 Bucket名称* 第二个参数 上传到oss文件路径和文件名称 aa/bb/1.jpg* 第三个参数 上传文件输入流*/oss.putObject(bucketName,fileName,inputStream);// 关闭ossoss.shutdown();//把上传之后文件路径返回//需要把上传到阿里云oss路径手动拼接出来// https://edu-guli-1010.oss-cn-beijing.aliyuncs.com/01.jpgString url = "https://" + bucketName + "." + endpoint + "/" + fileName;return url;}catch (Exception e){e.printStackTrace();return null;}}
}
6、swagger测试上传文件
7、查看OSS云服务器
开发中存在的错误
1、启动报错
原因:没有数据库配置
解决
启动类加上
exclude = DataSourceAutoConfiguration.class
再启动
启动正常
2、报错:com.aliyun.oss.OSSException: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
解决:
填写自己的,正确的endpoint
前端使用组件上传文件
使用element-ui组件
1、组件代码放到components目录下
2、添加上传文件的选择框代码
<!-- 讲师头像 -->
<el-form-item label="讲师头像"><!-- 头衔缩略图 --><pan-thumb :image="teacher.avatar"/><!-- 文件上传按钮 --><el-button type="primary" icon="el-icon-upload" @click="imagecropperShow=true">更换头像</el-button><!--v-show:是否显示上传组件:key:类似于id,如果一个页面多个图片上传控件,可以做区分:url:后台上传的url地址@close:关闭上传组件@crop-upload-success:上传成功后的回调 <input type="file" name="file"/>--><image-cropperv-show="imagecropperShow":width="300":height="300":key="imagecropperKey":url="BASE_API+'/eduoss/fileoss'"field="file"@close="close"@crop-upload-success="cropSuccess"/>
</el-form-item>
3、在data中定义变量和初始值
//上传弹框组件是否显示
imagecropperShow:false,
imagecropperKey:0,//上传组件key值
BASE_API:process.env.BASE_API, //获取dev.env.js里面地址
4、引入组件,声明组件
import ImageCropper from '@/components/ImageCropper'
import PanThumb from '@/components/PanThumb'components: { ImageCropper, PanThumb },
5、修改上传文件的接口为自己的后端地址
6、编写关闭和上传成功的方法
close() { //关闭上传弹框的方法this.imagecropperShow=false//上传组件初始化this.imagecropperKey = this.imagecropperKey+1
},
//上传成功方法
cropSuccess(data) {this.imagecropperShow=false//上传之后接口返回图片地址this.teacher.avatar = data.urlthis.imagecropperKey = this.imagecropperKey+1
},
7、访问页面,上传文件
8、保存后,查看oss服务器
结束!
幸福就像你身后的影子,你追不到,但是只要你往前走,它就会一直跟着你。
springboot 整合 oss进行文件上传相关推荐
- SpringBoot整合oss实现文件的上传,查看,删除,下载
springboot整合oss实现文件的上传,查看,删除,下载 1.什么是对象存储 OSS? 答:阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量. ...
- Ckfinder3+Oss 实现文件上传 防出错实战教程(三)Oss上传篇
一.去阿里云下载oss sdk 我用的是php 二.放入自己的项目中,位置自己看着来吧,每个人的项目也不同,我只做个演示如下图我放的位置 当一个插件来使用,放在plugins下 三,引用oss.打开c ...
- 使用阿里云OSS实现文件上传
概述场景 文件上传,是程序开发中必须会使用到的一个功能,比如: 添加商品,用户头像,文章封面等需求 富文本编辑(插件文件上传) 文件上传的原理是什么? 我们为什么要实现文件上传,其实就要共享资源,大家 ...
- java文件流 m.jb51.net_FasfDFS整合Java实现文件上传下载功能实例详解
今天使用Java代码实现文件的上传和下载.对此作者提供了Java API支持,下载fastdfs-client-java将源码添加到项目中.或者在Maven项目pom.xml文件中添加依赖 org.c ...
- 阿里云 oss服务器文件上传 java
前天做oss服务器文件上传,之前没了解过,做的过程中遇到许多问题,最终通过查阅相关资料解决了,特分享一下. 首先准备工作 必要的jar 这里注意版本一致,不然就会报很多坑爹的错误.. 如果你断点调试在 ...
- SpringBoot 系列教程(九十九):SpringBoot整合阿里云OSS实现文件上传,下载,删除功能
一.前言 之所以写这篇文章呢? 是因为最近在做文件上传时遇到一个问题,就是我们在以前使用传统Spring+SpringMVC+Mybatis框架开发Web项目的时候,都是将项目打包生成一个War包,然 ...
- Springboot 一行代码实现文件上传 20个平台、少写代码到极致
又是做好人好事的一天,有个小可爱私下问我有没有好用的springboot文件上传工具,这不巧了嘛,正好我私藏了一个好东西,顺便给小伙伴们也分享一下,demo地址放在文末了. 文件上传在平常不过的一个功 ...
- Vue Bootstrap OSS 实现文件上传
公司实现文件上传技术选型采用后端SpringBoot/Cloud,前端vue Bootstrap ,阿里云OSS作为文件存储,文件上传功能单独抽取封装文件上传组件,可供所有的文件的操作. 后端框架 版 ...
- 整合servlet、整个filter、整合listener、文件上传
一,整合 Servlet 通过注解扫描完成 Servlet 组件的注册 1.1 编写 servlet /** *SpringBoot 整合 Servlet 方式一 * *<servlet> ...
最新文章
- 虚幻引擎虚拟现实开发基础学习教程
- js 正则学习小记之左最长规则
- mysql记录操作日志
- python list map成员排序_python – 同时对多个列表进行排序
- Android之编程中存在性能影响的主要方面
- java arraylist 源代码_java中ArrayList的源代码是什么
- CF1598E-Staircases【计数】
- MONO,原来你是水中月
- HashMap中hash(Object key)原理(hashcode >>> 16)
- mysql知识点拾遗梳理
- Linux命令详解词典高频命令(1)
- 计算机2级vb查询,计算机2级VB
- 文件删除需要管理员权限
- 美团校招笔试题-算法8.20-python
- 2021大厂Android面试经验,经典好文
- EduSoho开源网校系统源码(附安装教程、下载安装包),支持开源免费下载
- 4s团队项目前端layui整合使用步骤
- 容联与腾讯云牵手!这一合作背后有何深意?
- 微信小程序OTO商城(客户端)
- 删除 linux的ln文件夹,linux下添加链接与删除链接(ln命令的用法)
热门文章
- 追梦算法----睡懒觉
- 基于PHP的汉服交流网站
- 不藏了,这些 Java 反射用法总结都告诉你们
- 华为机架服务器的型号和cpu,华为更新3款模块化机架服务器的处理器
- python 公司年会抽奖_公司年会抽奖程序-python
- [Delphi][FMX]史上最好用的Delphi的消息推送-D推
- 芒果tv不能用html5,芒果TV使用过程中的常见问题
- 六大垂直行业 | 中国移动室内定位白皮书(附下载)
- 3d 数学(叉乘、四元素、四元素旋转、四元素和四元素相乘、鼠标控制物体旋转、发射子弹、环形发射子弹、子弹缓冲池)
- “第三方即时配送”第一股那些事:顺丰同城成功上市后时代