详解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 相关文章推荐
背景音乐每次刷新都可以自动更换
Feb 01 Javascript
JSON语法五大要素图文介绍
Dec 04 Javascript
js常用自定义公共函数汇总
Jan 15 Javascript
jQuery .tmpl() 用法示例介绍
Aug 21 Javascript
Html5的placeholder属性(IE兼容)实现代码
Aug 30 Javascript
javascript基于prototype实现类似OOP继承的方法
Dec 16 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
Jan 27 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
Jun 21 Javascript
基于javascript实现按圆形排列DIV元素(三)
Dec 02 Javascript
JS实现含有中文字符串的友好截取功能分析
Mar 13 Javascript
axios学习教程全攻略
Mar 26 Javascript
原生JavaScript实现的简单放大镜效果示例
Feb 07 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
Smarty安装配置方法
2008/04/10 PHP
使用php计算排列组合的方法
2013/11/13 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
PHP MYSQL实现登陆和模糊查询两大功能
2016/02/05 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
PHP反射API示例分享
2016/10/08 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
js 异步处理进度条
2010/04/01 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
javascript文件加载管理简单实现方法
2015/07/25 Javascript
微信小程序开发一键登录 获取session_key和openid实例
2016/11/23 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
js定义类的方法示例【ES5与ES6】
2019/07/30 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
Python实现数据结构线性链表(单链表)算法示例
2019/05/04 Python
详解python函数的闭包问题(内部函数与外部函数详述)
2019/05/17 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
.NET初级开发工程师面试题(包括Javascript)
2012/08/22 面试题
平面设计的岗位职责
2013/11/08 职场文书
会计系中文个人求职信
2013/12/24 职场文书
新年团拜会主持词
2014/04/02 职场文书
企业形象策划方案
2014/05/29 职场文书
企业财务经理岗位职责
2015/04/08 职场文书