vueaxios使用教程交流(Vue使用axios图片上传遇到的问题)
vueaxios使用教程交流
Vue使用axios图片上传遇到的问题目录
- FormData是个什么鬼?
- 在vue和axios的配合下实战一波
- append()
- set()
- delete()
- get() 和 getAll()
- has()
经过多方搜索调查了解,这个神奇的东西是XMLHttpRequest Level 2 新增的一个对象,于2008年2月提出,可以利用它来提交表单、模拟表单提交,当然最大的优势就是可以上传二进制文件,可以把所有表单元素的name与value组成一个queryString,提交到后台。
划重点: 可以把所有表单元素的name与value组成一个queryString,提交到后台。这不就是后端所谓的转换数据格式,按格式提交呗,前后端分离肯定是异步提交,这个就可以很好的去解决这个问题!
使用也很soeasy 只需要把 form 表单作为参数传入 FormData 构造函数即可!
在vue和axios的配合下实战一波<!-- *.vue组件中的上传组件 我这里使用的是buefy的vue组件 --> <form method="post" enctype="multipart/form-data"> <b-field class="file is-primary" :class="{'has-name': !!file}"> <b-upload v-model="file" class="file-label" @input="getModifyAvatar()"> <span class="file-cta"> <b-icon class="file-icon" icon="upload"></b-icon> <span class="file-label">Click to upload</span> </span> <span class="file-name" v-if="file"> {{ file.name }} </span> </b-upload> </b-field> </form> <script> export default { data(){ return { userInfo: '', // 通过一个get请求把用户相关信息赋值给它 file: null, } }, methods: { // 修改头像 getModifyAvatar(){ const formData = new FormData(); // 构造formData数据 formData.append('avatar', this.file) // 提交put请求 getModifyInfo(formData).then(res => { this.userInfo.avatar = res.data.avatar }) }, } } </script>
// api.js // 这是我封装的全局请求方法 import { request } from '../network/request' // 修改用户头像 export const getModifyInfo = (params) => { return request({ url: 've_register/1/', method: 'put', headers: { 'Content-Type': 'multipart/form-data' }, data: params }) }
看以上代码,注意发送请求的时候一定要设置请求头header,如上所示,html表单form中也需要设置下enctype="multipart/form-data" 否则也是不行的!
通过上面的例子我们目前只用到了FormData的append()方法,网上大部分关于 FormData 介绍的文章都只提到了append()方法,那么FormData 对象到底有些什么方法呢?其实我们console 一下就知道了:
console 之后我们有重大的发现,FormData 对象竟然有这么多方法,所以还是自己测试才能发现真相,下面就对这些方法一一进行讲解:
append()
append()方法用于向 FormData 对象中添加键值对:
fd.append('key1',"value1"); fd.append('key2',"value2");
fd是 FormData 对象,可以新建的空的对象,也可以是已经包含 form 表单或其他键值对。
set()
设置对应的键 key 对应的值 value(s)
fd.set('key1',"value1"); fd.set('key2',"value2");
append() 方法有点类似,这两者的区别就是,当指定的 key 值存在时,append()方法是将新增的添加的所有的键值对最后,而set()方法将会覆盖前面的设置的键值对。还是通过实例来对比,我们在前面的 form 的基础上 append() 或 set() 新的键值对:
fd.append('name',"will");
有两个key为name的键值对:
以上就是 append() 和 set() 的区别。如果设置的key值不存在,那么两者的效果是一样的。
delete()
接收一个参数,表示你要删除的 key 值的名字,如果有多个相同 key 值,会一并删除:
fd.append('name','will'); fd.delete('name');
form 中的 name 信息以及通过append() 新增的name 的信息都被删除了。
get() 和 getAll()
接收一个参数,表示需要查找的 key 的名称,返回第一个该 key 对应的 value 值。如果有多个相同的 key, 而且要返回所有的这个 key 对应的 value 值。
同样以上面的 form 表单为基础:
fd.append('name','will'); console.log(fd.get('name')); // sean
fd.append('name','will'); console.log(fd.getAll('name')); // ["sean", "will"]
has()
该方法也接收一个参数,同样是 key 的名称,返回一个Boolean 值, 用来判断FormData 对象是否含有该 key。以上面的form为例:
console.log(fd.has('name')); // true console.log(fd.has('Name')); // false
其他几个就不介绍了,大家感兴趣的自己去验证下,写一遍吗,敲一遍,比看任何文章要来的实在哟!
如果以上文章对您有帮助,请给我们的开源项目点点star: github.crmeb.net/u/xingfu 不胜感激!
以上就是Vue使用axios图片上传遇到的问题的详细内容,更多关于Vue使用axios图片上传的资料请关注开心学习网其它相关文章!
- vue 设置头部可以左右滑动(vue实现左右滑动效果实例代码)
- uniapp使用vue写页面(分析uniapp入门之nvue爬坑记)
- vue指令使用技巧(Vue指令工作原理实现方法)
- vue代码统计(Vue实现计数器案例)
- vue的弹框怎么用(vue自定义弹框效果确认框、提示框)
- vue项目部署到服务器的nginx(Nginx部署vue项目和配置代理的问题解析)
- vue 路由的两种模式(Vue3使用路由VueRouter4的简单示例)
- vue可以使用jsx语法吗(vue中正确使用jsx语法的姿势分享)
- vue虚拟dom如何转换成真实dom的(vue中对虚拟dom的理解知识点总结)
- vue封装一个功能函数(vue中利用mqtt服务端实现即时通讯的步骤记录)
- vue-cli请求数据的方式(vue-cli配置使用Vuex的全过程记录)
- vue跨域代理怎么写(解决vue $http的get和post请求跨域问题)
- vue是怎样进行页面跳转(Vue实现登陆跳转)
- vue-router的安装(详解Vue-Router的安装与使用)
- 使用vue独立开发组件(vue单文件组件的实现)
- vue实现商品详情讲解(京东 Vue3 组件库支持小程序开发的详细流程)
- 入秋后的第二场苹果发布会来了 全新M1系列芯片登场(入秋后的第二场苹果发布会来了)
- 苹果正式发布自研芯片M1 5nm 32核心 彻底放弃Intel(苹果正式发布自研芯片M1)
- 苹果自研芯片跑分对比 A16芯片排名靠后,M1系列霸榜(苹果自研芯片跑分对比)
- X86处理器的梦魇 苹果M1自研芯片到底有多强(苹果M1自研芯片到底有多强)
- 泰剧《爱欲之神》Boom kitkong和Great合体杂志(泰剧爱欲之神Boomkitkong和Great合体杂志)
- 素人恋爱综艺火药味十足 男生为赢得芳心集体扯头花,真是出好戏(素人恋爱综艺火药味十足)
热门推荐
- python同步钉钉用户(python 调用钉钉机器人的方法)
- 简单介绍HTTPS与HTTP的区别
- typescript怎么加号(Typescript中的as、问号与感叹号详解)
- 虚拟云服务器如何安装宝塔(云服务器宝塔面板的安装图文教程详解)
- sqlserverlog原理(sql server中错误日志errorlog的深入讲解)
- sql语句groupby分组后怎么显示(SQL group by去重复且按照其他字段排序的操作)
- dede标签调用大全(织梦dede所有实用标签调用方法搜集整理)
- CSS中常用的几个技巧
- 阿里云的自带mysql怎么开启(阿里云云服务器mysql密码找回的方法)
- vsftpd服务器的安装与配置(编译安装 vsFTP 3.0.3的详细解析)