亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

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

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

經過多方搜索調查了解,這個神奇的東西是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='{’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: ’’, // 通過一個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’)); // trueconsole.log(fd.has(’Name’)); // false

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

如果以上文章對您有幫助,請給我們的開源項目點點star: github.crmeb.net/u/xingfu 不勝感激!

以上就是Vue使用axios圖片上傳遇到的問題的詳細內容,更多關于Vue使用axios圖片上傳的資料請關注好吧啦網其它相關文章!

標簽: IOS
相關文章:
主站蜘蛛池模板: 日韩视频在线观看视频 | 免费久久一级欧美特大黄 | 亚洲国产精品久久久久秋霞小 | 国产日产欧产麻豆精品精品推荐 | xxxxxx日本护士xxxx | 欧美一区二区三区久久综合 | 黄色欧美在线观看 | 女性特黄一级毛片 | 国产小视频网址 | aiai视频在线观看 | 大乳女人做受视频免费观看 | 国产在线激情视频 | 色午夜婷婷 | 青草免费视频 | 视频在线观看rrr在线观看 | 国产中文字幕久久 | 视频在线一区二区三区 | 国产一区二区三区手机在线观看 | 91精品婷婷国产综合久久8 | 在线观看毛片视频 | 亚洲九九精品 | 成人性a激情免费视频 | 一区二区三区日韩精品 | 色婷婷中文字幕 | 欧美亚洲一区二区三区 | 亚洲999| 日本一区二区三区高清福利视频 | 国产精品好好热在线观看 | 国产乱理伦片在线观看大陆 | 国产高清a毛片在线看 | 非洲一级毛片又粗又长aaaa | 成人性色生活影片 | 日本特交大片免费观看 | 国产精品久久久久久久小唯西川 | 免费高清性色生活片 | 国产免费爽爽视频免费可以看 | 成 人 黄 色视频免费播放 | 五月四房婷婷 | 欧美毛片视频 | 久久国产精品免费 | 一区二区国产一区二区a4yy |