详解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 存在陷阱 删除某一区域所有节点
May 10 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
Dec 19 Javascript
Jquery 实现grid绑定模板
Jan 28 Javascript
js实现人才网站职位选择功能的方法
Aug 14 Javascript
js倒计时抢购实例
Dec 20 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
Mar 13 Javascript
Node.js中sequelize时区的配置方法
Dec 10 Javascript
响应式框架Bootstrap栅格系统的实例
Dec 19 Javascript
vue-cli创建的项目,配置多页面的实现方法
Mar 15 Javascript
Vue.js 中的 v-show 指令及用法详解
Nov 19 Javascript
vue实现自定义H5视频播放器的方法步骤
Jul 01 Javascript
JavaScript编写开发动态时钟
Jul 29 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
PHP获取文件绝对路径的代码(上一级目录)
2011/05/29 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
jquery tools系列 expose 学习
2009/09/06 Javascript
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
JS 中document.write()的用法和清空的原因浅析
2017/12/04 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
2018/09/21 Javascript
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
typescript配置alias的详细步骤
2020/08/12 Javascript
在Django框架中编写Context处理器的方法
2015/07/20 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
Python对象与引用的介绍
2019/01/24 Python
Python搭建代理IP池实现检测IP的方法
2019/10/27 Python
Python优秀开源项目Rich源码解析的流程分析
2020/07/06 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
个人自我鉴定
2013/11/07 职场文书
教师应聘个人求职信
2013/12/10 职场文书
《悯农》教学反思
2014/04/28 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
赤壁观后感(2)
2015/06/15 职场文书
手术室消毒隔离制度
2015/08/05 职场文书