提示:没开通的先开通

操作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进行文件上传相关推荐

  1. SpringBoot整合oss实现文件的上传,查看,删除,下载

    springboot整合oss实现文件的上传,查看,删除,下载 1.什么是对象存储 OSS? 答:阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量. ...

  2. Ckfinder3+Oss 实现文件上传 防出错实战教程(三)Oss上传篇

    一.去阿里云下载oss sdk 我用的是php 二.放入自己的项目中,位置自己看着来吧,每个人的项目也不同,我只做个演示如下图我放的位置 当一个插件来使用,放在plugins下 三,引用oss.打开c ...

  3. 使用阿里云OSS实现文件上传

    概述场景 文件上传,是程序开发中必须会使用到的一个功能,比如: 添加商品,用户头像,文章封面等需求 富文本编辑(插件文件上传) 文件上传的原理是什么? 我们为什么要实现文件上传,其实就要共享资源,大家 ...

  4. java文件流 m.jb51.net_FasfDFS整合Java实现文件上传下载功能实例详解

    今天使用Java代码实现文件的上传和下载.对此作者提供了Java API支持,下载fastdfs-client-java将源码添加到项目中.或者在Maven项目pom.xml文件中添加依赖 org.c ...

  5. 阿里云 oss服务器文件上传 java

    前天做oss服务器文件上传,之前没了解过,做的过程中遇到许多问题,最终通过查阅相关资料解决了,特分享一下. 首先准备工作 必要的jar 这里注意版本一致,不然就会报很多坑爹的错误.. 如果你断点调试在 ...

  6. SpringBoot 系列教程(九十九):SpringBoot整合阿里云OSS实现文件上传,下载,删除功能

    一.前言 之所以写这篇文章呢? 是因为最近在做文件上传时遇到一个问题,就是我们在以前使用传统Spring+SpringMVC+Mybatis框架开发Web项目的时候,都是将项目打包生成一个War包,然 ...

  7. Springboot 一行代码实现文件上传 20个平台、少写代码到极致

    又是做好人好事的一天,有个小可爱私下问我有没有好用的springboot文件上传工具,这不巧了嘛,正好我私藏了一个好东西,顺便给小伙伴们也分享一下,demo地址放在文末了. 文件上传在平常不过的一个功 ...

  8. Vue Bootstrap OSS 实现文件上传

    公司实现文件上传技术选型采用后端SpringBoot/Cloud,前端vue Bootstrap ,阿里云OSS作为文件存储,文件上传功能单独抽取封装文件上传组件,可供所有的文件的操作. 后端框架 版 ...

  9. 整合servlet、整个filter、整合listener、文件上传

    一,整合 Servlet 通过注解扫描完成 Servlet 组件的注册 1.1 编写 servlet /** *SpringBoot 整合 Servlet 方式一 * *<servlet> ...

最新文章

  1. 虚幻引擎虚拟现实开发基础学习教程
  2. js 正则学习小记之左最长规则
  3. mysql记录操作日志
  4. python list map成员排序_python – 同时对多个列表进行排序
  5. Android之编程中存在性能影响的主要方面
  6. java arraylist 源代码_java中ArrayList的源代码是什么
  7. CF1598E-Staircases【计数】
  8. MONO,原来你是水中月
  9. HashMap中hash(Object key)原理(hashcode >>> 16)
  10. mysql知识点拾遗梳理
  11. Linux命令详解词典高频命令(1)
  12. 计算机2级vb查询,计算机2级VB
  13. 文件删除需要管理员权限
  14. 美团校招笔试题-算法8.20-python
  15. 2021大厂Android面试经验,经典好文
  16. EduSoho开源网校系统源码(附安装教程、下载安装包),支持开源免费下载
  17. 4s团队项目前端layui整合使用步骤
  18. 容联与腾讯云牵手!这一合作背后有何深意?
  19. 微信小程序OTO商城(客户端)
  20. 删除 linux的ln文件夹,linux下添加链接与删除链接(ln命令的用法)

热门文章

  1. 追梦算法----睡懒觉
  2. 基于PHP的汉服交流网站
  3. 不藏了,这些 Java 反射用法总结都告诉你们
  4. 华为机架服务器的型号和cpu,华为更新3款模块化机架服务器的处理器
  5. python 公司年会抽奖_公司年会抽奖程序-python
  6. [Delphi][FMX]史上最好用的Delphi的消息推送-D推
  7. 芒果tv不能用html5,芒果TV使用过程中的常见问题
  8. 六大垂直行业 | 中国移动室内定位白皮书(附下载)
  9. 3d 数学(叉乘、四元素、四元素旋转、四元素和四元素相乘、鼠标控制物体旋转、发射子弹、环形发射子弹、子弹缓冲池)
  10. “第三方即时配送”第一股那些事:顺丰同城成功上市后时代