Vue + iView實(shí)現(xiàn)Excel上傳功能的完整代碼
1、HTML部分
<Col span="2">上傳文件:</Col>
<Col span="22" class="uploadExcelBox">
<Upload ref="uploadExcel" :loading="uploadLoading" :action="uploadFileUrl" accept="xlsx,xls" :format="uploadFormat" :before-upload="beforeImgFile" :on-success="successImgFile" :on-error="errorImgFile" :show-upload-list="true">
<Button type="success">上傳附件</Button>
</Upload>
<div v-if="uploadingFile !== null">待上傳文件:
<span class="blueFont">{{ fileName }}</span>
<Button @click="uploadFun(index)" :loading="loadingStatus" class="manualUploadBtn">{{ loadingStatus ? '上傳中...' : '點(diǎn)擊開(kāi)始上傳' }}</Button>
</div>
</Col>
2、JS部分
<script>
// import excel from '@/libs/excel'
import service from '@/libs/request' //用來(lái)取當(dāng)前域名
import reportFormApi from '@/api/reportForm'
export default {
data() {
return {
uploadLoading:false,//上傳控件loading狀態(tài)
uploadFileUrl: "",
uploadFormat:['xlsx','xls'],
uploadingFile:null,//待上傳的文件
loadingStatus:false,//upload組件的狀態(tài)
fileName:"",//待上傳文件的名稱
}
},
mounted() {
this.uploadFileUrl = service.apiUrl + "/qingximaster/winInfo/execlAdd";//上傳Excel的接口路徑,后端人員提供。
},
methods: {
// 圖片上傳之前
beforeImgFile(file) {
// console.log(file);
const fileExt = file.name.split('.').pop().toLocaleLowerCase()
if (fileExt === 'xlsx' || fileExt === 'xls') {
var formdata = new FormData();
formdata.append("file",file);
this.fileName = formdata.get('file').name;//通過(guò)formdata.get('file')方法,可以取file文件里的信息,例如Excel的文件名。
this.uploadingFile = formdata;//注意:這個(gè)將作為參數(shù)傳給接口實(shí)現(xiàn)上傳。傳給接口的file不需要 formdata.get('file'),直接傳file。
} else {
this.$Notice.warning({
title: '文件類型錯(cuò)誤',
desc: '文件:' + file.name + '不是EXCEL文件,請(qǐng)選擇后綴為.xlsx或者.xls的EXCEL文件。'
})
}
return false
},
// 上傳成功
successImgFile(response, file, fileList) {
this.$Notice.success({
title: '提示',
desc: '上傳成功!'
})
},
// 上傳失敗
errorImgFile(error, file, fileList) {
this.$Notice.success({
title: '提示',
desc: '上傳失敗!'
})
console.log(error);
},
uploadFun(index){//調(diào)接口上傳Excel
this.loadingStatus = true;
reportFormApi.uploadExcel({
url: this.uploadFileUrl,
file: this.uploadingFile
}).then(res =>{
this.uploadingFile = null;
this.fileName = "";
if(res.code==0){
this.infoList[index].content = JSON.stringify(res.data);
// console.log(this.infoList[index].content);
this.$Message.success("上傳成功!");
}else{
this.$Message.error(res.message);
}
}).finally(()=>{
this.loadingStatus = false;
this.uploadLoading = false;
})
},
}
}
3、頁(yè)面效果如下
(1)進(jìn)入頁(yè)面默認(rèn)展示的樣子

(2)選中要上傳的Excel

(3)“點(diǎn)擊開(kāi)始上傳”之后


以上就是Vue + iView實(shí)現(xiàn)Excel上傳的詳細(xì)內(nèi)容,更多關(guān)于vue iview excel上傳的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue和webpack項(xiàng)目構(gòu)建過(guò)程常用的npm命令詳解
本文通過(guò)實(shí)例代碼給大家介紹了vue和webpack項(xiàng)目構(gòu)建過(guò)程常用的npm命令,需要的朋友可以參考下2018-06-06
vue項(xiàng)目中data數(shù)據(jù)之間互相訪問(wèn)的實(shí)現(xiàn)
本文主要介紹了vue項(xiàng)目中data數(shù)據(jù)之間互相訪問(wèn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
Ruoyi-Vue處理跨域問(wèn)題同時(shí)請(qǐng)求多個(gè)域名接口(前端處理方法)
跨域問(wèn)題一直都是很多人比較困擾的問(wèn)題,這篇文章主要給大家介紹了關(guān)于Ruoyi-Vue處理跨域問(wèn)題同時(shí)請(qǐng)求多個(gè)域名接口的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05
詳解vue-cli項(xiàng)目在IE瀏覽器打開(kāi)報(bào)錯(cuò)解決方法
這篇文章主要介紹了詳解vue-cli項(xiàng)目在IE瀏覽器打開(kāi)報(bào)錯(cuò)解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
利用Vue3+Element?Plus封裝公共表格組件(帶源碼)
最近公司項(xiàng)目中頻繁會(huì)使用到table表格,而且前端技術(shù)這一塊也用到了vue3來(lái)開(kāi)發(fā),所以基于element plus table做了一個(gè)二次封裝的組件,這篇文章主要給大家介紹了關(guān)于利用Vue3+Element?Plus封裝公共表格組件的相關(guān)資料,需要的朋友可以參考下2023-11-11

