您好,登錄后才能下訂單哦!
小編給大家分享一下使用vue實現axios圖片上傳功能的示例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
vue中實現圖片上傳,我這里使用的是FormData通過axios向后臺發送請求,從而實現圖片的上傳。
在發起請求的axios中一般用qs進行序列化,但是序列化之后,FormData就傳送失敗,所以要區別傳送的數據類型。
經過多次摸索總結了以下經驗,以供參考。
首先創建一個文件夾services ,里面有兩個文件 index.js 和 api.js。
我們的qs序列化和數據攔截寫在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類型判斷為重要點, ...data }); } ] }); request.interceptors.request.use( //請求攔截 config => { return config; }, error => Promise.error(error) ); request.interceptors.response.use(// 響應攔截器 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 },
頁面調用接口
async file_up(event) { //圖片預覽 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); //這里是調用api處, 此處為多圖上傳,供參考 if (res.result) { this.imgs.push(res.result.absoluteFilePath); } } } catch (err) { this.$toast({ message: err.message, duration: 1200 }); } }
以上是“使用vue實現axios圖片上傳功能的示例”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。