详解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中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
Oct 12 Javascript
jQuery获取注册信息并提示实现代码
Apr 21 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
Nov 14 Javascript
node.js中的fs.chownSync方法使用说明
Dec 16 Javascript
JavaScipt选取文档元素的方法(推荐)
Aug 05 Javascript
ReactNative-JS 调用原生方法实例代码
Oct 08 Javascript
如何判断出一个js对象是否一个dom对象
Nov 24 Javascript
Vue.js实现简单ToDoList 前期准备(一)
Dec 01 Javascript
javascript编程开发中取色器及封装$函数用法示例
Aug 09 Javascript
微信小程序中吸底按钮适配iPhone X方案
Nov 29 Javascript
npm 下载指定版本的组件方法
May 17 Javascript
小程序:授权、登录、session_key、unionId的详解
May 15 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中使用模板的方法
2008/05/24 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
2011/12/19 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
微信小程序自定义多列选择器使用详解
2019/06/21 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
2020/09/11 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
详解Python中的__getitem__方法与slice对象的切片操作
2016/06/27 Python
python类中super()和__init__()的区别
2016/10/18 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
python爬虫实现中英翻译词典
2019/06/25 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
临床医学系毕业生推荐信
2013/11/09 职场文书
产品工艺师的岗位职责
2013/11/15 职场文书
施工协议书范本
2014/04/22 职场文书
物理课外活动总结
2014/08/27 职场文书
十一国庆节“向国旗敬礼”主题班会活动方案
2014/09/27 职场文书
布达拉宫的导游词
2015/02/02 职场文书
早会开场白台词大全
2015/06/01 职场文书
在项目中使用redis做缓存的一些思路
2021/09/14 Redis
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL