day06项目【整合阿里云OSS和Excel导入分类】

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day06项目【整合阿里云OSS和Excel导入分类】相关的知识,希望对你有一定的参考价值。

参考技术A

为了解决海量数据存储与弹性扩容,项目中我们采用云存储的解决方案- 阿里云OSS。  

1、开通“对象存储OSS”服务

(1)申请阿里云账号

(2)实名认证

(3)开通“对象存储OSS”服务

(4)进入管理控制台

2、创建Bucket

选择:标准存储、公共读、不开通

3、上传默认头像

创建文件夹avatar,上传默认的用户头像





1、在service模块下创建子模块service-oss

2、配置pom.xml

service-oss上级模块service已经引入service的公共依赖,所以service-oss模块只需引入阿里云oss相关依赖即可,

service父模块已经引入了service-base模块,所以Swagger相关默认已经引入

3、配置application.properties

4、logback-spring.xml


5、创建启动类

创建OssApplication.java

6、启动项目

报错 :

spring boot 会默认加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration这个类,

而DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean,又因为项目(oss模块)中并没有关于dataSource相关的配置信息,所以当spring创建dataSource bean时因缺少相关的信息就会报错。

即可成功:

1、从配置文件读取常量

创建常量读取工具类:ConstantPropertiesUtil.java

使用@Value读取application.properties里的配置内容

用spring的 InitializingBean 的 afterPropertiesSet 来初始化配置信息,这个方法将在所有的属性被初始化后调用。

2、文件上传

创建Service接口:uploadFileAvatar.java

实现:OssServiceImpl.java

参考SDK中的:Java->上传文件->简单上传->流式上传->上传文件流

3、控制层

创建controller:FileUploadController.java

4、重启oss服务

5、Swagger中测试文件上传

解决上传文件覆盖问题:

测试:

6、配置nginx反向代理

配置nginx实现请求转发的功能:

验证:


1、复制头像上传组件

从vue-element-admin复制组件:

vue-element-admin/src/components/ImageCropper

vue-element-admin/src/components/PanThumb

2、前端参考实现

src/views/components-demo/avatarUpload.vue

3、前端添加文件上传组件

src/views/edu/teacher/save.vue

template:


引入组件模块:

4、设置默认头像(也可不设置)

onfig/dev.env.js中添加阿里云oss bucket地址

组件中初始化头像默认地址

5、js脚本实现上传和图片回显

二、测试文件上传

前后端联调


1、数据导入:减轻录入工作量

2、数据导出:统计信息归档

3、数据传输:异构系统之间数据传输

1、EasyExcel特点

    Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。

    EasyExcel是阿里巴巴开源的一个excel处理框架, 以使用简单、节省内存著称 。EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。

    EasyExcel采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理(AnalysisEventListener)。


1、创建一个普通的maven项目

项目名:excel-easydemo

2、pom中引入xml相关依赖

3、创建实体类

设置表头和添加的数据字段

4 、实现写操作

TestEasyExcel.java

(1)创建方法循环设置要添加到Excel的数据

(2)实现最终的添加操作(写法一)

(3)实现最终的添加操作(写法二)

public static void main(String[] args) throws Exception

         // 写法2,方法二需要手动关闭流

        //实现excel写的操作

        //1 设置写入文件夹地址和excel文件名称

        String filename = "F:\\\\write.xlsx";

        ExcelWriter excelWriter=EasyExcel.write(fileName,DemoData.class).build();

        WriteSheet writeSheet=EasyExcel.writerSheet("写入方法二").build();

        excelWriter.write(data(),writeSheet);

        /// 千万别忘记finish 会帮忙关闭流

        excelWriter.finish();

   

1、创建实体类

2、创建读取操作的监听器

3、调用实现最终的读取

public class TestEasyExcel

    public static void main(String[] args)

        //实现excel读操作

         // 写法1:

        String filename = "F:\\\\write.xlsx";

        // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭

        EasyExcel.read(filename,DemoData.class,new ExcelListener()).sheet().doRead();

         // 写法2:

          InputStream in = new BufferedInputStream(new FileInputStream("F:\\\\01.xlsx"));

        ExcelReader excelReader = EasyExcel.read(in, DemoData.class, new ExcelListener()).build();

        ReadSheet readSheet = EasyExcel.readSheet(0).build();

        excelReader.read(readSheet);

        // 这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的

        excelReader.finish();

   

1、编辑Excel模板

2、将文件上传至阿里云OSS

1、添加路由

2、添加vue组件

1、js定义数据

2、template

3、js上传方法

4、回调函数


1、service-edu模块配置依赖

1、EduSubjectController

2、创建和Excel对应的实体类

3、EduSubjectService

(1)接口

(2)实现类

4、创建读取Excel监听器



1、参考 views/tree/index.vue

2、创建api

api/edu/subject.js

3、list.vue

1、创建vo

2、创建controller

以上是关于day06项目【整合阿里云OSS和Excel导入分类】的主要内容,如果未能解决你的问题,请参考以下文章

在线教育_Day06_项目整合阿里云OSS和Excel导入分类

SpringBoot整合阿里云OSS

07-整合阿里云oss&用户认证&就诊人CRUD&平台统一管理用户

阿里云OOS技术

在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后端篇: 整合阿里云 OSS 服务 -- 上传下载文件图片