详解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 相关文章推荐
jQuery实现购物车多物品数量的加减+总价计算
Jun 06 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
Mar 06 Javascript
javascript实现控制浏览器全屏
Mar 30 Javascript
JQuery显示隐藏DIV的方法及代码实例
Apr 16 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
Oct 28 Javascript
JavaScript ES6中CLASS的使用详解
Nov 22 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
Jan 24 Javascript
Bootstrap禁用响应式布局的实现方法
Mar 09 Javascript
jquery.param()实现数组或对象的序列化方法
Oct 08 jQuery
vue多次循环操作示例
Feb 08 Javascript
微信小程序日历插件代码实例
Dec 04 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
Dec 14 Vue.js
快速解决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中date()日期函数有关参数整理
2011/07/19 PHP
php导出中文内容excel文件类实例
2015/07/06 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
2015/07/29 PHP
PHP程序员学习使用Swoole的理由
2018/06/24 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
2013/12/16 Javascript
js中indexof的用法详细解析
2013/12/24 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
js获取域名的方法
2015/01/27 Javascript
自定义百度分享的分享按钮
2015/03/18 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
JavaScript从0开始构思表情插件
2016/07/26 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
微信小程序简单的canvas裁剪图片功能详解
2019/07/12 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
Python 文件读写操作实例详解
2014/03/12 Python
Python开发的HTTP库requests详解
2017/08/29 Python
django缓存配置的几种方法详解
2018/07/16 Python
python3 xpath和requests应用详解
2020/03/06 Python
python实现贪吃蛇双人大战
2020/04/18 Python
学子宴答谢词
2014/01/25 职场文书
老公保证书范文
2014/04/29 职场文书
岗位说明书范文
2014/05/07 职场文书
2014年文员工作总结
2014/11/18 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
新学期主题班会
2015/08/17 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书