Vue + iView實現(xiàn)Excel上傳功能的完整代碼
更新時間:2021年06月22日 09:35:27 作者:牧馬少女
前一段時間項目經(jīng)歷了前端上傳文件的過程,首先進入頁面會展示默認的樣子,選中要上傳的excel文件,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,需要的朋友參考下吧
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 ? '上傳中...' : '點擊開始上傳' }}</Button>
</div>
</Col>
2、JS部分
<script>
// import excel from '@/libs/excel'
import service from '@/libs/request' //用來取當前域名
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;//通過formdata.get('file')方法,可以取file文件里的信息,例如Excel的文件名。
this.uploadingFile = formdata;//注意:這個將作為參數(shù)傳給接口實現(xiàn)上傳。傳給接口的file不需要 formdata.get('file'),直接傳file。
} else {
this.$Notice.warning({
title: '文件類型錯誤',
desc: '文件:' + file.name + '不是EXCEL文件,請選擇后綴為.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、頁面效果如下
(1)進入頁面默認展示的樣子

(2)選中要上傳的Excel

(3)“點擊開始上傳”之后


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

