抽取通用的controller service dao (尽量掌握)
1 系统中的文件存储的问题
1.海量图片存储
2.线性扩容的问题
3.高性能
4.集群部署 高可用的问题。
5.安全
使用fastdfs可以解决以上的问题。
2 fastdfs
是一个高性能的 高可用 线性扩容的 分布式文件系统。用来存储和解决大容量存储 和高性能的图片存储的问题。
对比:阿里云OSS存储:收费 稳定性能有专业的人支持 稳定性好 防盗链等现有的解决方案 数据安全相对的。
七牛: 收费 稳定性能有专业的人支持 稳定性好 防盗链等现有的解决方案 数据安全相对的。
fastdfs: 开源 稳定性看开发人员 需要自己实现。 数据安全性高。
3 畅购的图片的解决方案
1.独立成一个具体无关业务的文件微服务
2.其他的业务微服务 通过feign进行调用实现业务
好处:
+ 解耦合
+ 扩展维护方便
+ 提升机器的利用率 降低成本
总结:
4 安装
5 图片上传的功能实现
1.前端点击上传按钮,发送一个请求
2.将文件本身作为流传递给后台微服务
3.微服务接收到流之后,进行存储变成字节数组 调用fastdfs的工具类将图片上传给fastdfs服务端即可
参考springmvc上传图片的过程:1.在前端创建一个form 表单 设置enctype="mult-part/form-data"
2.创建一个type为file类型 指定文件对象<input type="file" name="file">
3.后台写一个controller 接收请求 获取文件的字节数组 将字节数组存储到某一个地方(通过写流输出到磁盘中)
4.需要加入common-file-upload.jar
5.配置多媒体解析器
使用springboot结合fastdfs上传图片:1.在前端创建一个form 表单 设置enctype="mult-part/form-data"
2.创建一个type为file类型 指定文件对象<input type="file" name="file">
-------------------以上 前端进行模拟----------------------------
3.后台写一个controller 接收请求 获取文件的字节数组 将字节数组存储到某一个地方 fastdfs工具类上传到fastdfs中
4.需要加入common-file-upload.jar(默认已经加入了)
5.配置多媒体解析器 需要在yaml中进行配置
图片上传的请求:
请求 /upload
参数: 文件 由MultPartFile 来接收 参数的名称也是file
返回值:图片的路径 例如:http://192.168.211.132:8080/group1/M00/00/00/wKjThF_jJ0iAXz7wAAAl8vdCW2Y421.png