vue實(shí)現(xiàn)axios圖片上傳功能
vue中實(shí)現(xiàn)圖片上傳,我這里使用的是FormData通過axios向后臺(tái)發(fā)送請(qǐng)求,從而實(shí)現(xiàn)圖片的上傳。
在發(fā)起請(qǐng)求的axios中一般用qs進(jìn)行序列化,但是序列化之后,F(xiàn)ormData就傳送失敗,所以要區(qū)別傳送的數(shù)據(jù)類型。
經(jīng)過多次摸索總結(jié)了以下經(jīng)驗(yàn),以供參考。
首先創(chuàng)建一個(gè)文件夾services ,里面有兩個(gè)文件 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( //請(qǐng)求攔截
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 請(qǐng)求接口就無須做任何操作了,下面示例:
async upImgs(files) { // 我的相冊(cè)圖片上傳
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)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決vue-router在同一個(gè)路由下切換,取不到變化的路由參數(shù)問題
今天小編就為大家分享一篇解決vue-router在同一個(gè)路由下切換,取不到變化的路由參數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09
Vue中的父子組件通訊以及使用sync同步父子組件數(shù)據(jù)
這篇文章主要介紹了Vue中的父子組件通訊以及使用sync同步父子組件數(shù)據(jù),對(duì)vue感興趣的同學(xué),可以參考下2021-04-04
Vue生產(chǎn)環(huán)境如何自動(dòng)屏蔽console
這篇文章主要介紹了Vue生產(chǎn)環(huán)境如何自動(dòng)屏蔽console問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
基于Vue實(shí)現(xiàn)卡片無限滾動(dòng)動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了如何利用Vue制作出卡片無限滾動(dòng)動(dòng)畫,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定幫助,需要的可以參考一下2022-05-05
Vue Element前端應(yīng)用開發(fā)之獲取后端數(shù)據(jù)
這篇文章主要介紹了Vue Element前端應(yīng)用開發(fā)之獲取后端數(shù)據(jù),對(duì)vue感興趣的同學(xué),可以參考下2021-05-05

