项目地址https://github.com/Fairfarren/mySth/tree/master/axiosUpload
获取图片
input改变时会触发一个方法,触发方法的时候回把本身传递过去,标签内部加了一个multile="true"
属性,是可以多选的。
|
|
首先获取图片对象,然后先通过循环的方式查看选中的文件的格式。最后通过FileReader()
方法去将图片转成base64格式的。base64格式可以直接写在<img>
标签内的src
属性内
|
|
以上获取图片并且预览都算做好了,接下来是nodejs端的接收
接收图片并做保存
我是用的express
直接生成的一个项目,设了一个路由叫/img
,然后在这个路由下去设置
因为需要保存文件,所以需要加载fs
模块
通过post
去接收到axios
传过来的值后,用正则进行过滤一下,然后通过Buffer()
方法进行base64的保存
保存的时候我用了当前时间的秒来当做图片的名字,是什么格式的其实也可以定义的,只是传值得时候传过来
|
|
第一次写的时候接收到的base64一直报错,后来查询后发现是文件过大,需要做更改
app.js
文件下
网上查询后有人说改动app.use(bodyParser.json({'limit':'30000kb'}));
,有人说改动app.use(bodyParser.urlencoded({ 'limit':'30000kb' }));
,但是我在改动前者后没有反应,索性都改了。
大概就是控制文件最大值吧,具体是什么我也不知道的 ;)
|
|