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 函数replace深入了解
Mar 14 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
Aug 28 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
Nov 20 Javascript
js图片延迟技术一般的思路与示例
Mar 20 Javascript
javascript笛卡尔积算法实现方法
Apr 08 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
Aug 28 Javascript
JS与jQ读取xml文件的方法
Dec 08 Javascript
vue2.0获取自定义属性的值
Mar 28 Javascript
jQuery动态追加页面数据以及事件委托详解
May 06 jQuery
JavaScript实现封闭区域布尔运算的示例代码
Jun 25 Javascript
微信小程序实现单选功能
Oct 30 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
Jun 08 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
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
浅析PHP绘图技术
2013/07/03 PHP
php环境无法上传文件的解决方法
2014/04/30 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
网页禁用右键实现代码(JavaScript代码)
2009/10/29 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
2013/02/05 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
python和flask中返回JSON数据的方法
2018/03/26 Python
详解django实现自定义manage命令的扩展
2019/08/13 Python
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
单位未婚证明范本
2014/01/18 职场文书
高中数学教学反思
2014/01/30 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
创先争优一句话承诺
2014/05/29 职场文书
奉献家乡演讲稿
2014/09/16 职场文书
先进典型事迹材料
2014/12/29 职场文书
幼儿学前班评语
2014/12/29 职场文书
详细聊聊关于Mysql联合查询的那些事儿
2021/10/24 MySQL