day06项目【整合阿里云OSS和Excel导入分类】
为了解决海量数据存储与弹性扩容,项目中我们采用云存储的解决方案- 阿里云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
对外经济贸易大学创新与创业管理研究中心主要业绩
国家社会科学基金项目(02CJY018):进行中国企业跨国经营战略的实证研究,并进行国际比较。国家社会科学基金项目(05CJY012):重点关注如何通过发展循环经济提出有效的对策。国家社会科学基金项目(06CJY003):针对境外国有资产监管问题进行深入研究。教育部“十五”社会科学规划项目(01JA630065):致力于创...
足球经理2006怎么玩?
1. 常项目内容(以TCM2006游戏提供的项目为基准,游戏中文见我签名里的TCM06游戏助手) 收入(Income)———支出(Expenditure) (1)季票(Season Tickets)———(1)球员工资(Player Salaries) (2)联赛门票(Gate Receipts League)———(2)雇员工资(Staff Salaries) (3)国家杯赛门票(Gate Receipts National Cups)——...
温州大学物理与电子信息工程学院的附录表格
基于迭代测距整合的无线网络可定位性与定位算法研究 面上 31 6 20934004 章林溪 DNA大分子链刚性与构象转变 重点 60 7 10947017\/ A05 姜年权 量子态表象变换中的经典变换及其应用的研究 专项 14 2009年学院所获浙江省自然科学基金项目资助名单 序号 项目批准号 申请者 ...
奥运会有多少个比赛项目
008年奥运会比赛项目为28个大项、302个小项。其中,男子、女子和男女混合竞赛小项分别为165、127和10项。这些体育大项包括:田径、赛艇、羽毛球、棒球、篮球、拳击、皮划艇、自行车、马术、击剑、足球、体操、举重、手球、曲棍球、柔道、摔跤、游泳、现代五项、垒球、跆拳道、网球、乒乓球、射击、射箭、...
怎样将NBALIVE06中的画面截图下来?
CTRL+T\/Y 可进行首行缩进(将光标移到需做此操作的段尾,或将此段选中进行操作 Ctrl+A(或Ctrl+小键盘上数字5):选中全文。Ctrl+B:给选中的文字加粗(再按一次,取消加粗)。Ctrl+C:将选中的文字复制到剪贴板中。Ctrl+D:打开“字体”对话框,快速完成字体的各种设置。Ctrl+E:使光标所在行的...
小天才y03和y06哪个好
小天才Y06儿童电话手表采用一块1.3英寸彩屏,TPU软胶表带,壳体采用双色注塑工艺。续航方面,手表内置720mAh高密度锂电池,配有充电保护芯片,最长支持7天待机时间;定位方面,小天才Y06支持GPS、GLONASS、蜂窝基站、WiFi、运动传感器和A-GPS这6种定位方式,相较于前代产品更快更准,随时帮助家长守护孩子的...
v* v* y55a有什么隐藏功能吗?
vivo所有隐藏代码 vivo手机中有很多的隐藏代码,输入一些隐藏的代码就能够快速的进入一些程序。以下是一些常见的vivo手机隐藏代码:06#\/#0000#: 快速查看手机的IEMI码(手机串号),IEMI是国际移动设备身份码的缩写,国际移动装备辨识码。558#: 这个代码可以让你进行工程测试,来测试你手机的各种硬件是否运行...
06年CPA考试审计辅导内部讲义(十七)
对于情况⑸,a注册会计师应核实函证地址与被审计单位应收账款明细账户记录的地址是否一致,如一致,说明账户记录中地址有误,无法再按此地址函证,应转而检查与销售有关的文件,如销售合同、销售发票副本及货运文件等,以证实产品确已发出;如函证地址与y公司明细账户的地址不一致,则有可能是地址差错,a...
已知直线y=kx+1经过点a06且平行直线y=-2x1求该直线的函数解析式2如果这...
线y=kx+b平行于直线y=-2x 所以k=-2 所以y=-2x+b 因为直线y=kx+b经过点A(1,4)所以y=-2x+6 把P(m,2)带入y=-2x+6 则2=-2m+6 m=2 所以p为(2,2)所以op为y=x 求出op:y=x和y=-2x+6的交点为(2,2)再求出y=-2x+6与x轴的交点为(3,0)所以面积为2*3\/2=3 (...
已知直线y=kx+b经过点a06且平行于直线y=负2x一求该直线的函数关系式二...
1、直线y=kx+b平行于直线y=-2x 所以两直线斜率相等,即k=-2,将A(0,6)代入 6=0+b=>b=6 该直线的表达式:y=-2x+6 2、直线经过点P(m,2),所以y=-2x+6=> 2=-2m+6=> m=2 3、过原点O和点P的直线:y=k1x+a 将(0,0)(2,2)代入得 a=0,k1=1 方程为y=x ...