vue實(shí)現(xiàn)axios圖片上傳功能
vue中實(shí)現(xiàn)圖片上傳,我這里使用的是FormData通過axios向后臺發(fā)送請求,從而實(shí)現(xiàn)圖片的上傳。
在發(fā)起請求的axios中一般用qs進(jìn)行序列化,但是序列化之后,F(xiàn)ormData就傳送失敗,所以要區(qū)別傳送的數(shù)據(jù)類型。
經(jīng)過多次摸索總結(jié)了以下經(jīng)驗(yàn),以供參考。
首先創(chuàng)建一個文件夾services ,里面有兩個文件 index.js 和 api.js。
我們的qs序列化和數(shù)據(jù)攔截寫在index.js中
import axios from "axios"; import config from "@/config"; import router from "@/router"; import validate from "@/util/validate"; import Qs from "qs"; const request = axios.create({ baseURL: config.hostUrl, timeout: 52000, transformRequest: [ (data) => { return data instanceof FormData ? data : Qs.stringify({ //此處的data類型判斷為重要點(diǎn), ...data }); } ] }); request.interceptors.request.use( //請求攔截 config => { return config; }, error => Promise.error(error) ); request.interceptors.response.use(// 響應(yīng)攔截器 async function (res) { if (res.status === 200) { return Promise.resolve(res.data); } else { return Promise.reject(res.data); } }, async function (error) { const { response } = error; if (response) { return Promise.reject(response); } else { } } ); export default request;
寫好上面的代碼在api.js 請求接口就無須做任何操作了,下面示例:
async upImgs(files) { // 我的相冊圖片上傳 return (await request.post('/basis/uploadFile', files)).response },
頁面調(diào)用接口
async file_up(event) { //圖片預(yù)覽 try { let res = null; this.file = [...event.target.files]; for (let i = 0, f; (f = this.file[i]); i++) { if (i >= 8 || this.imgs.length >= 8) { return; } let fileImg = new FormData(); fileImg.append("file", f); res = await this.$api.upImgs(fileImg); //這里是調(diào)用api處, 此處為多圖上傳,供參考 if (res.result) { this.imgs.push(res.result.absoluteFilePath); } } } catch (err) { this.$toast({ message: err.message, duration: 1200 }); } }
是不是很簡單呀!反正我是實(shí)現(xiàn)了,有問題可以討論下哦。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue動態(tài)生成新表單并且添加驗(yàn)證校驗(yàn)規(guī)則方式
這篇文章主要介紹了vue動態(tài)生成新表單并且添加驗(yàn)證校驗(yàn)規(guī)則方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10vue項(xiàng)目優(yōu)雅實(shí)現(xiàn)自動引入組件的方法詳解
在我們寫vue項(xiàng)目的時候,都會引入一些組件庫,有時候有可能還不止一個組件庫,那么如何優(yōu)雅的實(shí)現(xiàn)自動引入組件呢,下面小編就來和大家詳細(xì)講講吧2023-09-09vue項(xiàng)目中引入noVNC遠(yuǎn)程桌面的方法
下面小編就為大家分享一篇vue項(xiàng)目中引入noVNC遠(yuǎn)程桌面的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03