web项目图片/文件保存方式

其实文件和图片都是二进制流文件 以下统称图片

1直接把图片存到数据库字段中

第一种做法是最简单的,直接把图片当成字符串一样来操作,用对象的一个属性来接收,CRUD不多说,但是是最低效最不实际的做法,实际情况不使用

2图片存项目/public/img目录,文件名存数据库字段

这种玩玩自己demo,没有自己服务器的时候第一首选
接下来将讲讲细节
1前端发送文件给后端应该用js预览,
如果直接每次都直接上传会有问题
为什么呢,举个例子
你现在是编辑一个商品 有名称 有图片 图片上传了 哦吼你刷新一下 或者你关掉页面了
这时候图片永远都在数据库了 或者新建商品已经有一个没用的商品词条了
而且每选择一次图片都会访问数据库,不会这么做的

2后端取得了图片,要把名字唯一用uuid/当前时间戳都行,再切割".",获得文件后缀
图片名变为"时间戳/uuid.格式名"例如:1557222244420.jpg,放到数据库字段中
文件用流存储到相对路径
为什么是相对路径
因为你的代码要拿到linux上线运行,放到项目的一个文件夹下,这样就可以整体迁移

最后前端只需要获得后端的图片文件名,再加上路径的拼接,就可以获得图片了

缺点,项目存了很多文件和图片,很大
所以有第三个方法
附上js预览代码

//vue中的method
bannerChange: function (event) {
                var self = this;
                var file = event.target.files[0];
                self.imgUploadInfo.banner_url = file;
                // 图片预览
                var reader = new FileReader();
                reader.onload = (function (theFile) {
                    return function (e) {
                        self.bannerFile = e.target.result;
                    }
                })(file);
                reader.readAsDataURL(file);
            },

3规范的使用阿里云oss/腾讯云cos存图片,数据库存图片名

具体做法可以参考
配置cos文章
http://www.manongjc.com/article/24925.html
我的文章
https://blog.csdn.net/weixin_44637711/article/details/89930179
两个其实都是云上存储,可以公网直接访问图片
https://bravery-1258739678.cos.ap-guangzhou.myqcloud.com/1557219376367.jpg
src拿到其实也是网络的东西
也是做些字符拼接即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值