详解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 相关文章推荐
图片完美缩放
Sep 07 Javascript
使用javascript创建快捷方式的简单实例
Aug 09 Javascript
通过$(this)使用jQuery包装后的方法或属性
May 18 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
Aug 17 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
Sep 14 Javascript
BootStrap网页中代码显示用法详解
Oct 21 Javascript
EditPlus 正则表达式 实战(3)
Dec 15 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
Jan 22 Javascript
jQuery实现div跟随鼠标移动
Aug 20 jQuery
浅谈 Vue 项目优化的方法
Dec 16 Javascript
bootstrap table.js动态填充单元格数据的多种方法
Jul 18 Javascript
浅谈Vue.set实际上是什么
Oct 17 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
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
PHP 编程安全性小结
2010/01/08 PHP
关于php curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
php curl请求信息和返回信息设置代码实例
2015/04/27 PHP
Javascript 倒计时源代码.(时.分.秒) 详细注释版
2011/05/09 Javascript
js根据给定的日期计算当月有多少天实现思路及代码
2013/02/25 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
jquery实现select下拉框美化特效代码分享
2015/08/18 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
typescript配置alias的详细步骤
2020/08/12 Javascript
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
2020/12/14 NodeJs
Django与遗留的数据库整合的方法指南
2015/07/24 Python
python实现分页效果
2017/10/25 Python
Python中常用信号signal类型实例
2018/01/25 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
python实现批量图片格式转换
2020/06/16 Python
python之django母板页面的使用
2018/07/03 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
建筑工程专业学生的自我评价
2013/12/25 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
中标通知书范本
2015/04/17 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
Redis高级数据类型Hyperloglog、Bitmap的使用
2021/05/24 Redis
总结Python使用过程中的bug
2021/06/18 Python
vue ref如何获取子组件属性值
2022/03/31 Vue.js