亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Vue中使用axios上傳圖片

發布時間:2021-05-27 16:08:47 來源:億速云 閱讀:612 作者:Leah 欄目:開發技術

如何在Vue中使用axios上傳圖片?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

在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 一下就知道了:

如何在Vue中使用axios上傳圖片

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的鍵值對:

如何在Vue中使用axios上傳圖片

以上就是 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

vue是什么

Vue是一套用于構建用戶界面的漸進式JavaScript框架,Vue與其它大型框架的區別是,使用Vue可以自底向上逐層應用,其核心庫只關注視圖層,方便與第三方庫和項目整合,且使用Vue可以采用單文件組件和Vue生態系統支持的庫開發復雜的單頁應用。

看完上述內容,你們掌握如何在Vue中使用axios上傳圖片的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安顺市| 白玉县| 湖州市| 台湾省| 黄浦区| 东丽区| 贡觉县| 汝城县| 榆社县| 三门峡市| 永丰县| 涪陵区| 余干县| 普安县| 隆化县| 砀山县| 鱼台县| 青田县| 横峰县| 大丰市| 姜堰市| 土默特右旗| 台前县| 阿鲁科尔沁旗| 古蔺县| 金华市| 沙田区| 紫阳县| 南召县| 沙河市| 凌云县| 依安县| 泸定县| 泊头市| 云霄县| 犍为县| 孝义市| 临泉县| 凤山县| 余庆县| 平利县|