最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue項目中form?data形式傳參方式

 更新時間:2022年06月02日 09:39:08   作者:帥_帥  
這篇文章主要介紹了vue項目中form?data形式傳參方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

vue中form data形式傳參

vue項目中form data形式傳參,需要在headers中添加如下代碼

 headers: {
             'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
         }

接口請求如下:

export function subFaq (params) {
    return request({
        url: `/jxxx/pub/iface/speech/`,
        method: 'PUT',
        data:qs.stringify(params),
         headers: {
             'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
         }
    })
}

如下圖,在Form Data的中形式下,需要使用qs.stringify(params) ,params是一個對象

如下圖,在Form Data的中形式下,直接傳的是對象

vue文件提交 FormData方式

做Vue項目的時候, 提交數(shù)據(jù)基本上都是用Axios, 之前做過的表單方面的提交,一直沒有空隙進行總結(jié),今天得空進行一下復(fù)習(xí)和總結(jié):Vue中使用Axios處理包含上傳文件的表單提交

可能出現(xiàn)的問題:

常見的問題
1、上傳文件應(yīng)該以什么方式提交, 比如后臺是multipart/form-data, 而習(xí)慣性以json對象發(fā)送數(shù)據(jù)(實際上大量插件對數(shù)據(jù)對象也封裝了方法, 所以容易忽略)
2、上傳文件提交的格式, 以為將對象改成數(shù)組就太天真了
3、語法錯誤. 比如:>> :on-change=“自定義事件名” 寫成>> @on-change=""

前驅(qū)知識

FormDate

FormData 接口提供了一種表示表單數(shù)據(jù)的鍵值對 key/value 的構(gòu)造方式,并且可以輕松的將數(shù)據(jù)通過XMLHttpRequest.send() 方法發(fā)送出去,本接口和此方法都相當(dāng)簡單直接。如果送出時的編碼類型被設(shè)為 “multipart/form-data”,它會使用和表單一樣的格式。

每個FormData對象都有一個相關(guān)的entry。它最初是一個空列表。entry 由name和value組成。

英文文獻(xiàn):https://xhr.spec.whatwg.org/#interface-formdata

FormData()使用的時候要創(chuàng)建一個新的 FormData 對象。

let FormData = new FormData();

方法

FormData.append(name, value)`

向 FormData 對象中添加新的屬性值,F(xiàn)ormData 對應(yīng)的屬性值存在也不會覆蓋原值,而是新增一個值,如果屬性不存在則新增一項屬性值。

append(name, value) 和 append(name, blobValue, filename)

請注意參數(shù)name、value和blobValue存在的原因是由于用于編寫的編輯軟件的限制XMLHttpRequest標(biāo)準(zhǔn)。

FormData.delete(name)
  • delete (name)方法步驟是從這個條目列表中刪除名稱為name的所有條目。
  • FormData.entries()返回一個包含所有鍵值對的iterator對象。
  • FormData.get(name)返回在 FormData 對象中與給定鍵關(guān)聯(lián)的第一個值。

如果在這個條目列表中沒有名稱為name的條目,則返回null。

返回此條目列表中名稱為name的第一個條目的值。

  • FormData.getAll(name)返回一個包含 FormData 對象中與給定鍵關(guān)聯(lián)的所有值的數(shù)組。

如果在這個條目列表中沒有名稱為name的條目,則返回空列表

按順序從這個條目列表中返回名稱為name的所有條目的值

  • FormData.has(name)返回一個布爾值表明 FormData 對象是否包含某些鍵。

如果在條目列表中有一個名為name的條目,則has (name)方法步驟將返回true;否則false。

  • FormData.keys()返回一個包含所有鍵的iterator對象。
  • FormData.set(name, value)給 FormData 設(shè)置屬性值,如果FormData 對應(yīng)的屬性值存在則覆蓋原值,否則新增一項屬性值。

set (name, value)和set (name, blobValue, filename)方法步驟如下:

1.給予的value要有value值;否則blobValue。

2.如果使用name、blobValue和filename,則將entry設(shè)為創(chuàng)建條目的結(jié)果。

3.如果在這個條目列表中有名稱為name的條目,那么用entry替換第一個這樣的條目,并刪除其他條目

4.否則,將條目添加到this的條目列表中。

  • FormData.values()返回一個包含所有值的iterator對象。

FormData的使用

axios 傳參時要注意的

 
//重點在*   
//重點在*   
//重點在*   
//重點在*   
let file = new FormData();//*
  for(let key in data){//*
    file.append(key,data[key]);//*
  };
 axios({
    method:"post",
    url:baseUrl +"/api/cateadd",
    data:file,//*
  }).then(res=>{
     //請求成功返回的數(shù)據(jù)在這進行操作
     
 }).catch(err=>{
    //請求失敗返回的數(shù)據(jù)在這 
     
 });

URL

URL.createObjectURL(file)

通過URL.createObjectURL(file)可以獲取當(dāng)前文件的一個內(nèi)存URL,

createObjectURL是同步執(zhí)行的

createObjectURL返回一段帶hash的url,并且一直存儲在內(nèi)存中,直到document觸發(fā)了unload事件(例如:document close)或者執(zhí)行revokeObjectURL來釋放。

實操

下面使用兩種方式進行講解文件如何提交:

1.使用element-ui

使用element-ui的方便之處就是不用再費勁自己寫css樣式,有包裝好的組件直接引入即可,在這不講怎么使用element-UI的使用,感興趣的自己進官網(wǎng)進行查看(官網(wǎng):https://element.faas.ele.me/#/zh-CN

使用 element-ui 中的 Upload 組件,

代碼引入以后查看upload組件對應(yīng)的方法屬性,里面有兩個方法:on-success和on-change兩個鉤子函數(shù),

鉤子函數(shù)說明類型
on-success文件上傳成功時的鉤子function(response, file, fileList)response是服務(wù)器返回的響應(yīng)file一個文件fileList存放多個文件的數(shù)組
on-change文件狀態(tài)改變時的鉤子,添加文件、上傳成功和上傳失敗時都會被調(diào)用function(file, fileList)file一個文件fileList存放多個文件的數(shù)組

element-UI將返回的file對象封裝了一下, 首先我們要拿到真正的文件對象, 使用的時候一定要在提交數(shù)據(jù)之前看看數(shù)據(jù)到底在哪里:

  • 真正的File對象是fileList數(shù)組中某個元素的raw屬性!
  • 真正的File對象是fileList數(shù)組中某個元素的raw屬性!
  • 真正的File對象是fileList數(shù)組中某個元素的raw屬性!
  • 真正的File對象是fileList數(shù)組中某個元素的raw屬性!

重要的事多說幾遍?。。?!

在這我選擇使用on-change,因為element-UI中提供了一個http-request事件來覆蓋默認(rèn)的action, 這樣很好的避免了一些異常,on-success雖然通過了驗證, 但是在生產(chǎn)環(huán)境中由于action地址空所以默認(rèn)請求當(dāng)前地址, 出現(xiàn)了404。

<template>
? ? <el-upload
? ? ? ? class="avatar-uploader"
? ? ? ? action="#"
? ? ? ? :show-file-list="false"
? ? ? ? :on-change="changeImg"http:// changeImg事件名是自定義的
? ? ? ? >
? ? ? ? <img v-if="imageUrl" :src="imageUrl" class="avatar" >
? ? ? ? <i v-else class="el-icon-plus avatar-uploader-icon"></i>
? ? </el-upload>
</template>
<script>
? ? ? //改變圖片時,獲取圖片路徑及信息,e 指的是提交上來的文件
? ? ? ? changeImg(e){
? ? ? ? ? // 1.處理文件大小
? ? ? ? ? if(e.size > 2*1024*1024){
? ? ? ? ? ? alert('文件大小不能超過2M')
? ? ? ? ? ? return
? ? ? ? ? }
? ? ? ? ? // 2.處理文件后綴
? ? ? ? ? var ext = ['.jpg','.png','.jpeg','.gif'];
? ? ? ? ? var extName = e.name.slice(e.name.lastIndexOf('.'));
? ? ? ? ? if(!ext.some(item=>item==extName)){
? ? ? ? ? ? alert('上傳文件格式不正確')
? ? ? ? ? ? return
? ? ? ? ? }
? ? ? ? ? // 上傳顯示的文件
? ? ? ? ? // 將文件生成url地址,并顯示在頁面中
? ? ? ? ? this.imageUrl = URL.createObjectURL(e.raw)
? ? ? ? ? // 將文件存放到form.img中
? ? ? ? ? this.form.img = e.raw;//真正的File對象是fileList數(shù)組中某個元素的raw屬性!
? ? ? ? ? ??
? ? ? ? },
</script>

2.使用原始的方法

自己寫好樣式:

<template>
?? ?<!-- 自定義文件上傳 -->
? ? <div class="img-box">
? ? ? ? <h3>+</h3>
? ? ? ? <img v-if="imageUrl" :src="imageUrl" alt="">
? ? ? ? <input type="file" @change="changeImg1">
? ? </div>
</template>
<script>
? changeImg1(e){
? ? ? ?// 取出上傳的文件
? ? ? let file = e.target.files[0];
? ? ? // 1.確認(rèn)文件大小
? ? ? if (file.size > 2 * 1024 * 1024) {
? ? ? ? warningAlert("文件大小不能大于2M");
? ? ? ? return;
? ? ? }
? ? ? // 2.確認(rèn)文件格式
? ? ? let arr = [".jpg", ".jpng", ".png", ".jpeg"];
? ? ? let lastName = file.name.slice(file.name.lastIndexOf("."));
? ? ? if (!arr.some(item => item == lastName)) {
? ? ? ? warningAlert("文件格式錯誤");
? ? ? ? return;
? ? ? }
? ? ? // 3.獲取文件的存儲位置用于渲染頁面
? ? ? this.imgUrl = URL.createObjectURL(file);
? ? ? // console.log(this.imgUrl);
? ? ? // 4.將文件賦值給要提交的變量
? ? ? this.form.img = file;
? ? },
</script>

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Vue3實現(xiàn)列表虛擬滾動的詳細(xì)步驟

    使用Vue3實現(xiàn)列表虛擬滾動的詳細(xì)步驟

    在前端開發(fā)中,列表的虛擬滾動是一種常見的優(yōu)化手段,可以大大提升頁面性能,在Vue3中,我們可以通過一些技巧來實現(xiàn)列表的虛擬滾動,本文將介紹如何使用Vue3實現(xiàn)列表的虛擬滾動,讓你的頁面加載更快、更流暢,需要的朋友可以參考下
    2024-09-09
  • vue+mockjs模擬數(shù)據(jù)實現(xiàn)前后端分離開發(fā)的實例代碼

    vue+mockjs模擬數(shù)據(jù)實現(xiàn)前后端分離開發(fā)的實例代碼

    本篇文章主要介紹了vue+mockjs模擬數(shù)據(jù)實現(xiàn)前后端分離開發(fā)的實例代碼,具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • 帶你理解vue中的v-bind

    帶你理解vue中的v-bind

    如果你寫過vue,對v-bind這個指令一定不陌生。 下面小編將從源碼層面去帶大家剖析一下v-bind背后的原理,需要的小伙伴可以參考下面章的具體內(nèi)容
    2021-09-09
  • Element中select多數(shù)據(jù)加載優(yōu)化的實現(xiàn)

    Element中select多數(shù)據(jù)加載優(yōu)化的實現(xiàn)

    本文主要介紹了Element中select多數(shù)據(jù)加載優(yōu)化的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 關(guān)于導(dǎo)入、配置Vuetify遇到的幾個問題

    關(guān)于導(dǎo)入、配置Vuetify遇到的幾個問題

    這篇文章主要介紹了關(guān)于導(dǎo)入、配置Vuetify遇到的幾個問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue中使用codemirror的實例詳解

    vue中使用codemirror的實例詳解

    這篇文章主要介紹了vue中使用codemirror的實例教程,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2018-11-11
  • Element中Upload組件上傳功能實現(xiàn)(圖片和文件的默認(rèn)上傳及自定義上傳)

    Element中Upload組件上傳功能實現(xiàn)(圖片和文件的默認(rèn)上傳及自定義上傳)

    這篇文章主要介紹了Element中Upload組件上傳功能實現(xiàn)包括圖片和文件的默認(rèn)上傳及自定義上傳,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • Vue3的路由傳參方法超全匯總

    Vue3的路由傳參方法超全匯總

    vue路由傳參的使用場景一般都是應(yīng)用在父路由跳轉(zhuǎn)到子路由時,攜帶參數(shù)跳轉(zhuǎn),下面這篇文章主要給大家介紹了關(guān)于Vue3路由傳參方法的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • vue-router history模式服務(wù)器端配置過程記錄

    vue-router history模式服務(wù)器端配置過程記錄

    vue路由有hash和history兩種模式,這篇文章主要給大家介紹了關(guān)于vue-router history模式服務(wù)器端配置的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • Vue使用MD5對前后端進行加密的實現(xiàn)

    Vue使用MD5對前后端進行加密的實現(xiàn)

    前后端分離的項目,遇到了對密碼進行加密的情況,在前端或者是在后端加密都是可以的,本文主要介紹了Vue使用MD5對前后端進行加密的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04

最新評論

阿拉善左旗| 沭阳县| 德惠市| 宜川县| 太原市| 吉林市| 潜山县| 岳西县| 故城县| 视频| 山西省| 女性| 兰坪| 吉隆县| 宾阳县| 星子县| 河间市| 甘谷县| 郑州市| 绍兴县| 定襄县| 长宁县| 乌兰察布市| 托克托县| 彰武县| 景洪市| 蕲春县| 台东市| 富阳市| 昭觉县| 太仆寺旗| 浠水县| 永善县| 黄冈市| 永仁县| 邢台市| 靖安县| 深水埗区| 正阳县| 和硕县| 军事|