Vue 使用formData方式向后台发送数据的实现


Posted in Javascript onApril 14, 2019

很多时候在使用form向后台发送数据的时候,并不需要使用到表单组件。

例如时间戳、ip等,这个时候除了ajax之外,还可以使用HTML5的一个全新方法FormData;在input[type = file]的文件类型中,很多时候想要把一张图片或者是使用canvas绘制好的图像传送到后台时,无法赋值给file文件,只能转换为base64类型传送到后台,然后由后台转换为图片再进行服务器存储;此过程较为复杂;

使用formdata,只需创建新的formdata对象,将要发送的数据添加进去,后台即可接收;数据以及文件对象皆可;

1. 基本使用方式

template

<input class="file" name="file" type="file" accept="image/png,image/gif,image/jpeg" @change="update"/>

JavaScript

update (e) {
  let file = e.target.files[0]
  // console.log(file)
  let param = new FormData() // 创建form对象
  param.append('file', file, file.name) // 通过append向form对象添加数据
  param.append('id', this.$store.state.userId) // 添加form表单中其他数据
   // withCredentials: true 使得后台可以接收表单数据 跨域请求
  const instance = axios.create({
    withCredentials: true
  })
  // url为后台接口
  instance.post('url', param)
    .then(this.succ) // 成功返回信息 调用函数 函数需自己定义,此处后面省略
    .catch(this.serverError) // 服务器错误 调用对应函数 函数需自己定义,此处后面省略
}

2. 美化 input file 按钮 (拓展)

思路:

  1. 简单粗暴地隐藏:opacity: 0;
  2. 在 <input class="file"> 元素节点的位置上创建一个好看的元素节点,比如img
  3. 将 <input class="file"> 元素的z轴变高,使得其覆盖<img/> :z-index: 5;
  4. 因为 <input class="file"> 是透明的,那么我们就只看见它同xy上的好看的<img />
  5. 点击这个好看的<img /> 其实是点击了它上层的表单

以上思路可以实现点击用户头像,通过表单上传更换头像,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript XML和string相互转化实现代码
Jul 04 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
Sep 17 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
Jan 24 Javascript
JavaScript实现按Ctrl键打开新页面
Sep 04 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
Aug 30 Javascript
超实用的JavaScript代码段 附使用方法
May 22 Javascript
js获取隐藏元素的宽高
Feb 24 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
Jul 21 Javascript
js实现数组内数据的上移和下移的实例
Nov 14 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
Nov 05 Javascript
Vue 动态组件与 v-once 指令的实现
Feb 12 Javascript
typescript编写微信小程序创建项目的方法
Jan 29 Javascript
说说如何使用Vuex进行状态管理(小结)
Apr 14 #Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
Apr 14 #Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
Apr 14 #Javascript
vue 实现小程序或商品秒杀倒计时
Apr 14 #Javascript
js中async函数结合promise的小案例浅析
Apr 14 #Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
Apr 14 #Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
Apr 13 #Javascript
You might like
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
2013/04/08 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
解析Jquery的LigerUI如何实现文件上传
2013/07/09 Javascript
热点新闻滚动特效的js代码
2013/08/17 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
JavaScript判断变量是否为空的自定义函数分享
2015/01/31 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
jQuery控制frames及frame页面JS的方法
2016/03/08 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
使用JSON格式提交数据到服务端的实例代码
2018/04/01 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
基于vue、react实现倒计时效果
2019/08/26 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
2020/06/05 Javascript
Python类定义和类继承详解
2015/05/08 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
Python flask框架post接口调用示例
2019/07/03 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
我的动漫时代的创业计划书范文
2014/01/27 职场文书
办理护照工作证明
2014/10/10 职场文书
团委工作总结2015
2015/04/02 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书
flex弹性布局详解
2022/03/20 HTML / CSS