详解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 相关文章推荐
关于图片的预加载过程中隐藏未知的
Dec 19 Javascript
Jquery 分页插件之Jquery Pagination
Aug 25 Javascript
Bootstrap每天必学之级联下拉菜单
Mar 27 Javascript
JS判断图片是否加载完成方法汇总(最新版)
May 13 Javascript
简单实现js页面切换功能
Jan 10 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
Nov 24 Javascript
jquery uploadify隐藏上传进度的实现方法
Feb 06 Javascript
vue项目常用组件和框架结构介绍
Dec 24 Javascript
JS从非数组对象转数组的方法小结
Mar 26 Javascript
新手快速上手webpack4打包工具的使用详解
Jan 28 Javascript
详解基于 Node.js 的轻量级云函数功能实现
Jul 08 Javascript
关于JS中的作用域中的问题思考分享
Apr 06 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
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
php用正则表达式匹配中文实例详解
2013/11/06 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
PHP实现的迷你漂流瓶
2015/07/29 PHP
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
Vue实现push数组并删除的例子
2019/11/01 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
浅谈python函数之作用域(python3.5)
2017/10/27 Python
python字典操作实例详解
2017/11/16 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
python内置数据类型之列表操作
2018/11/12 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
Scrapy框架实现的登录网站操作示例
2020/02/06 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
教师党员承诺书2015
2015/01/21 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
JS数组方法some、every和find的使用详情
2021/10/05 Javascript