详解Vue+axios+Node+express实现文件上传(用户头像上传)


Posted in Javascript onAugust 10, 2018

Vue 页面的代码

<label for='my_file' class="theme-color">
 <mu-icon left value="backup"></mu-icon>
 修改头像
</label>
<input type="file" ref="upload" name="avatar" id='my_file' style="display:none;" accept="image/jpg" @change="changeAvatar" />

axios接口

let ChangeAvatar = (img) => axios({
 url: '/user/changeavatar',
 method: 'post',
 anync: true,
 contentType: false,
 processData: false,
 data: img
})

js部分调用封装的接口

methods: {
  changeAvatar (event) {
   let img = event.target.files[0];
   let size = img.size;
   if (size > 3145728) {
    alert('请选择3M以内的图片!');
    return false;
   }
   let Form = new FormData();
   Form.append('avatar', img, this.avatar_name);
   API.ChangeAvatar(Form)
    .then((response) => {
     console.log(response)
    })
    .catch((error) => {
     console.log(error)
    })
  }
 }
  1. 在这里我并没有用form方式,而是将input隐藏,用label绑定input,当我们点击label的时候,也就点击了input
  2. 我将请求封装在了另一个文件里,为ChangeAvatar()函数,如果不封装,按常规写法一样是可以的
  3. Form.append('avatar', img, this.avatar_name);第一个参数为input的name,第二个参数为文件对象,第三个参数为文件的名字
  4. ajax new FormData() 方法提交文件时,不能用data:{a:1}的键值对方法提交,应当直接将文件对象提交data:FormData

后台node代码

const fileUpload = require('express-fileupload');
app.use(fileUpload());

app.post('/user/changeavatar', function(req, res) {
 console.log(req.files); // the uploaded file object
 let avatar = req.files.avatar;

 // Use the mv() method to place the file somewhere on your server
 avatar.mv('dist/static/img/avatar/'+req.files.avatar.name+'.jpg', function(err) {
  if (err)
   return res.status(500).send(err);

  res.send('File uploaded!');
 });
})

在这里我并没有用multer,而是用别人的npm包express-fileupload

代码运行,成功将图片上传到了指定目录

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Wordpress ThickBox 添加“查看原图”效果代码
Dec 11 Javascript
JavaScript在多浏览器下for循环的使用方法
Nov 07 Javascript
JavaScript实现上下浮动的窗口效果代码
Oct 12 Javascript
javascript实现图片轮播效果
Jan 20 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
Apr 28 Javascript
防止Node.js中错误导致进程阻塞的办法
Aug 11 Javascript
JS实现类似51job上的地区选择效果示例
Nov 17 Javascript
angular实现form验证实例代码
Jan 17 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
May 22 Javascript
JavaScript与Java正则表达式写法的区别介绍
Aug 15 Javascript
jQuery实现上下滚动公告栏详细代码
Nov 21 jQuery
layui 关闭open弹出框 刷新table表格页面的方法
Sep 16 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
Aug 10 #Javascript
Bootstrap模态对话框中显示动态内容的方法
Aug 10 #Javascript
解决bootstrap-select 动态加载数据不显示的问题
Aug 10 #Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
Aug 10 #Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
Aug 10 #Javascript
bootstrap下拉框动态赋值方法
Aug 10 #Javascript
layui实现点击按钮给table添加一行
Aug 10 #Javascript
You might like
如何使用PHP获取网络上文件
2006/10/09 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
PHP使用array_fill定义多维数组的方法
2015/03/18 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
javascript密码强度校验代码(两种方法)
2015/08/10 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
js实现select选择框效果及美化
2016/08/19 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
Javascript基础回顾之(一) 类型
2017/01/31 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
python获取一组汉字拼音首字母的方法
2015/07/01 Python
python编码最佳实践之总结
2016/02/14 Python
python实现从本地摄像头和网络摄像头截取图片功能
2019/07/11 Python
python 插入日期数据到Oracle实例
2020/03/02 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
Python Map 函数的使用
2020/08/28 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
保健品市场营销方案
2014/03/31 职场文书
三月雷锋月活动总结
2014/07/03 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
小学语文复习计划
2015/01/19 职场文书
教代会开幕词
2015/01/28 职场文书
教师自荐信范文
2015/03/06 职场文书
教师反邪教心得体会
2016/01/15 职场文书