详解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中邮箱地址 URL网站地址正则验证实例代码
Sep 15 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
Jan 13 Javascript
jquery图片倾斜层叠切换特效代码分享
Aug 27 Javascript
简单的分页代码js实现
May 17 Javascript
使用 vue.js 构建大型单页应用
Feb 10 Javascript
js canvas实现写字动画效果
Nov 30 Javascript
微信小程序使用for循环动态渲染页面操作示例
Dec 25 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
Jan 18 jQuery
jQuery中DOM常见操作实例小结
Aug 01 jQuery
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
Aug 23 Javascript
vue实现员工信息录入功能
Jun 11 Javascript
Vue3中的Refs和Ref详情
Nov 11 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 中的4种标记风格介绍
2012/05/10 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
javascript 函数调用的对象和方法
2010/07/01 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
详解vue组件基础
2018/05/04 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
JS如何实现手机端输入验证码效果
2020/05/13 Javascript
基于Python实现的微信好友数据分析
2018/02/26 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
python脚本开机自启的实现方法
2019/06/28 Python
简单了解django索引的相关知识
2019/07/17 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
css 元素选择器的简单实例
2016/05/23 HTML / CSS
ColourPop美国官网:卡拉泡泡,洛杉矶彩妆品牌
2019/04/28 全球购物
《小草和大树》教学反思
2014/02/16 职场文书
媒体宣传策划方案
2014/05/25 职场文书
优秀员工评优方案
2014/06/13 职场文书
关爱残疾人标语
2014/06/25 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
务工证明怎么写
2015/06/18 职场文书
父亲去世追悼词
2015/06/23 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
领导干部学习心得体会
2016/01/23 职场文书