概念
实现对文件增删改查,若是图片服务器需要考虑图片的压缩
文件服务器的好处
文件你存储在电脑里面也可以,存储在电脑里面给一个路径就可以了,为什么要用文件服务器;
- 对文件的操作有记录 比如增删改查,可以花式查询并对结果做操作,之前需要用比较复杂的正则才可以
做到,比如按照日期查询,尤其是数量高到几万的时候,Window自带的文件管理存在不足;
查询出一批数据到别的地方,或者对其进行不同比例的压缩,前端有需要的去选择图片;
- 可以利用索引,比如GridFS建立表的时候会自动对Filename和ID做索引;
- 对文件的操作有了一个可以分的比较详细的权限管控,可以任意的与别的权限系统管理
- 可以对文件进行拆分,比如我只让你看到一部分这种;
文件服务器的功能
文件的增加
- 前缀地址+相对地址1+所添加文件的二进制所转化的Base64String --->添加成功 --->返回success+URL;
其中URL地址为后面一部分路径(非Ip和端口部分)存数据库;
- 我这里是只存储在一个地址上面,不备份不容灾;
- 文件命名规则 返回GUID还是别的
- 文件存储路径 是一个表存储一个路径还是再仔细分
- 后端还是否需要对文件后缀名做判断
- 我这里必须对传递过来的文件大小做出判断,过大了不给存储;
文件的修改
文件的删除
文件的查询
图片的压缩
最好是前端压缩???
文件服务器
MongoDB
- <16M
当文档过小时,直接存储在文档对象中比较合适,
https://www.cnblogs.com/yilezhu/p/9315644.html
- MongoDB>16M
MongoDB-GridFS
原理:驱动会在当前数据库创建2个集合,一个"fs.files" 和“fs.chunks” 集合
fs.files 记录文件名称,创建时间,文件类型等基本信息;
fs.chunks 分块存储了文件的二进制数据,分块的意思是指把文件分割成指定大小进行分割,然后存入多个文档中;
FastDSF
部署复杂,没有对.net core 做优化;
https://www.cnblogs.com/yilezhu/p/12797543.html
MinIO
分布式,性能最好
https://www.cnblogs.com/yilezhu/p/12830123.html
第三方平台存储
阿里云OSS或者七牛
前端框架
UpLoadFile
SixLabors
TODO 不会用
其它
TODO
注意事项
- 图片尺寸最大值的限制,一个是网速,一个是存储空间,可以设置手机相机像素或者是再前端压缩后再上传