详解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 相关文章推荐
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
Feb 04 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
Nov 25 Javascript
JavaScript对数组进行随机重排的方法
Jul 22 Javascript
浅谈Javascript数组的使用
Jul 29 Javascript
使用Javascript写的2048小游戏
Nov 25 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
Aug 21 Javascript
浅谈js中的引用和复制(传值和传址)
Sep 18 Javascript
Angular 4.x 动态创建表单实例
Apr 25 Javascript
微信小程序 生命周期函数详解
May 24 Javascript
JS实现图片拖拽交换效果
Nov 30 Javascript
Vue 动态组件与 v-once 指令的实现
Feb 12 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
Sep 03 jQuery
快速解决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
Memcached常用命令以及使用说明详解
2013/06/27 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
Javascript简单实现可拖动的div
2013/10/22 Javascript
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
2017/01/20 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
JavaScript相等运算符的九条规则示例详解
2019/10/20 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
vue data对象重新赋值无效(未更改)的解决方式
2020/07/24 Javascript
Python中的闭包详细介绍和实例
2014/11/21 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
python 内置函数filter
2017/06/01 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
html5弹跳球示例代码
2013/07/23 HTML / CSS
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
咖啡书吧创业计划书
2014/01/13 职场文书
财务总监管理岗位职责
2014/03/08 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
Python 文字识别
2022/05/11 Python