电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Vue使用axios圖片上傳遇到的問題

瀏覽:7日期:2022-09-29 11:17:02
目錄FormData是個(gè)什么鬼?在vue和axios的配合下實(shí)戰(zhàn)一波append()set()delete()get() 和 getAll()has()FormData是個(gè)什么鬼?

經(jīng)過多方搜索調(diào)查了解,這個(gè)神奇的東西是XMLHttpRequest Level 2 新增的一個(gè)對(duì)象,于2008年2月提出,可以利用它來提交表單、模擬表單提交,當(dāng)然最大的優(yōu)勢(shì)就是可以上傳二進(jìn)制文件,可以把所有表單元素的name與value組成一個(gè)queryString,提交到后臺(tái)。

劃重點(diǎn): 可以把所有表單元素的name與value組成一個(gè)queryString,提交到后臺(tái)。這不就是后端所謂的轉(zhuǎn)換數(shù)據(jù)格式,按格式提交唄,前后端分離肯定是異步提交,這個(gè)就可以很好的去解決這個(gè)問題!

使用也很soeasy 只需要把 form 表單作為參數(shù)傳入 FormData 構(gòu)造函數(shù)即可!

在vue和axios的配合下實(shí)戰(zhàn)一波

<!-- *.vue組件中的上傳組件 我這里使用的是buefy的vue組件--><form method='post' enctype='multipart/form-data'> <b-field :class='{’has-name’: !!file}'><b-upload v-model='file' @input='getModifyAvatar()'> <span class='file-cta'><b-icon icon='upload'></b-icon><span class='file-label'>Click to upload</span> </span> <span v-if='file'>{{ file.name }} </span> </b-upload> </b-field></form><script> export default {data(){ return {userInfo: ’’, // 通過一個(gè)get請(qǐng)求把用戶相關(guān)信息賦值給它file: null, }},methods: { // 修改頭像 getModifyAvatar(){const formData = new FormData();// 構(gòu)造formData數(shù)據(jù)formData.append(’avatar’, this.file)// 提交put請(qǐng)求getModifyInfo(formData).then(res => { this.userInfo.avatar = res.data.avatar}) },} }</script>

// api.js// 這是我封裝的全局請(qǐng)求方法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 })}

看以上代碼,注意發(fā)送請(qǐng)求的時(shí)候一定要設(shè)置請(qǐng)求頭header,如上所示,html表單form中也需要設(shè)置下enctype='multipart/form-data' 否則也是不行的!

通過上面的例子我們目前只用到了FormData的append()方法,網(wǎng)上大部分關(guān)于 FormData 介紹的文章都只提到了append()方法,那么FormData 對(duì)象到底有些什么方法呢?其實(shí)我們console 一下就知道了:

Vue使用axios圖片上傳遇到的問題

console 之后我們有重大的發(fā)現(xiàn),F(xiàn)ormData 對(duì)象竟然有這么多方法,所以還是自己測(cè)試才能發(fā)現(xiàn)真相,下面就對(duì)這些方法一一進(jìn)行講解:

append()

append()方法用于向 FormData 對(duì)象中添加鍵值對(duì):

fd.append(’key1’,'value1');fd.append(’key2’,'value2');

fd是 FormData 對(duì)象,可以新建的空的對(duì)象,也可以是已經(jīng)包含 form 表單或其他鍵值對(duì)。

set()

設(shè)置對(duì)應(yīng)的鍵 key 對(duì)應(yīng)的值 value(s)

fd.set(’key1’,'value1');fd.set(’key2’,'value2');

append() 方法有點(diǎn)類似,這兩者的區(qū)別就是,當(dāng)指定的 key 值存在時(shí),append()方法是將新增的添加的所有的鍵值對(duì)最后,而set()方法將會(huì)覆蓋前面的設(shè)置的鍵值對(duì)。還是通過實(shí)例來對(duì)比,我們?cè)谇懊娴?form 的基礎(chǔ)上 append() 或 set() 新的鍵值對(duì):

fd.append(’name’,'will');

有兩個(gè)key為name的鍵值對(duì):

Vue使用axios圖片上傳遇到的問題

以上就是 append() 和 set() 的區(qū)別。如果設(shè)置的key值不存在,那么兩者的效果是一樣的。

delete()

接收一個(gè)參數(shù),表示你要?jiǎng)h除的 key 值的名字,如果有多個(gè)相同 key 值,會(huì)一并刪除:

fd.append(’name’,’will’);fd.delete(’name’);

form 中的 name 信息以及通過append() 新增的name 的信息都被刪除了。

get() 和 getAll()

接收一個(gè)參數(shù),表示需要查找的 key 的名稱,返回第一個(gè)該 key 對(duì)應(yīng)的 value 值。如果有多個(gè)相同的 key, 而且要返回所有的這個(gè) key 對(duì)應(yīng)的 value 值。

同樣以上面的 form 表單為基礎(chǔ):

fd.append(’name’,’will’);console.log(fd.get(’name’)); // sean

fd.append(’name’,’will’);console.log(fd.getAll(’name’)); // ['sean', 'will']has()

該方法也接收一個(gè)參數(shù),同樣是 key 的名稱,返回一個(gè)Boolean 值, 用來判斷FormData 對(duì)象是否含有該 key。以上面的form為例:

console.log(fd.has(’name’)); // trueconsole.log(fd.has(’Name’)); // false

其他幾個(gè)就不介紹了,大家感興趣的自己去驗(yàn)證下,寫一遍嗎,敲一遍,比看任何文章要來的實(shí)在喲!

如果以上文章對(duì)您有幫助,請(qǐng)給我們的開源項(xiàng)目點(diǎn)點(diǎn)star: github.crmeb.net/u/xingfu 不勝感激!

以上就是Vue使用axios圖片上傳遇到的問題的詳細(xì)內(nèi)容,更多關(guān)于Vue使用axios圖片上傳的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: IOS
相關(guān)文章:
主站蜘蛛池模板: 鲸鱼视觉 -数字展厅多媒体互动展示制作公司| 高压管道冲洗清洗机_液压剪叉式升降机平台厂家-林君机电 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | 牛奶检测仪-乳成分分析仪-北京海谊| 工业雾炮机_超细雾炮_远程抑尘射雾器-世纪润德环保设备 | 经济师考试_2025中级经济师报名时间_报名入口_考试时间_华课网校经济师培训网站 | 【电子厂招聘_普工招工网_工厂招聘信息平台】-工立方打工网 | 茶叶百科网-茶叶知识与茶文化探讨分享平台 | 云南外加剂,云南速凝剂,云南外加剂代加工-普洱澜湄新材料科技有限公司 | 消电检公司,消电检价格,北京消电检报告-北京设施检测公司-亿杰(北京)消防工程有限公司 | 立刷【微电签pos机】-嘉联支付立刷运营中心 | 培训一点通 - 合肥驾校 - 合肥新亚驾校 - 合肥八一驾校 | 东莞韩创-专业绝缘骨架|马达塑胶零件|塑胶电机配件|塑封电机骨架厂家 | 精密机械零件加工_CNC加工_精密加工_数控车床加工_精密机械加工_机械零部件加工厂 | 截齿|煤截齿|采煤机截齿|掘进机截齿|旋挖截齿-山东卓力截齿厂家报价 | 柔软云母板-硬质-水位计云母片组件-首页-武汉长丰云母绝缘材料有限公司 | 代理记账_公司起名核名_公司注册_工商注册-睿婕实业有限公司 | 新材料分散-高速均质搅拌机-超声波分散混合-上海化烁智能设备有限公司 | 电梯乘运质量测试仪_电梯安全评估测试仪-武汉懿之刻 | 双工位钻铣攻牙机-转换工作台钻攻中心-钻铣攻牙机一体机-浙江利硕自动化设备有限公司 | 英国公司注册-新加坡公司注册-香港公司开户-离岸公司账户-杭州商标注册-杭州优创企业 | 一体化预制泵站-一体化提升泵站-一体化泵站厂家-山东康威环保 | ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | 洁净实验室工程-成都手术室净化-无尘车间装修-四川华锐净化公司-洁净室专业厂家 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 数年网路-免费在线工具您的在线工具箱-shuyear.com | 品牌策划-品牌设计-济南之式传媒广告有限公司官网-提供品牌整合丨影视创意丨公关活动丨数字营销丨自媒体运营丨数字营销 | 超细粉碎机|超微气流磨|气流分级机|粉体改性设备|超微粉碎设备-山东埃尔派粉碎机厂家 | 北京租车牌|京牌指标租赁|小客车指标出租 | 香蕉筛|直线|等厚|弧形|振动筛|香蕉筛厂家-洛阳隆中重工 | 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 设定时间记录电子秤-自动累计储存电子秤-昆山巨天仪器设备有限公司 | 菲希尔FISCHER测厚仪-铁素体检测仪-上海吉馨实业发展有限公司 | 建大仁科-温湿度变送器|温湿度传感器|温湿度记录仪_厂家_价格-山东仁科 | 慈溪麦田广告公司,提供慈溪广告设计。| 钢格板_钢格栅_格栅板_钢格栅板 - 安平县鑫拓钢格栅板厂家 | 合肥防火门窗/隔断_合肥防火卷帘门厂家_安徽耐火窗_良万消防设备有限公司 | 杭州代理记账费用-公司注销需要多久-公司变更监事_杭州福道财务管理咨询有限公司 | 视频教程导航网_视频教程之家_视频教程大全_最新视频教程分享发布平台 | 河北码上网络科技|邯郸小程序开发|邯郸微信开发|邯郸网站建设 |