Vue:使用elementUI upload組件上傳excel文件

image.png

彈框組件(完整代碼)

<template>
  <div>
    <el-dialog title="導(dǎo)入excel" v-if="dialogVisible" :visible.sync="dialogVisible" width="40%">
      <el-upload
        class="ml-10"
        :limit="limitNum"
        :auto-upload="false"
        accept=".xlsx"
        :action="UploadUrl()"
        :before-upload="beforeUploadFile"
        :on-change="fileChange"
        :on-exceed="exceedFile"
        :on-success="handleSuccess"
        :on-error="handleError"
        :file-list="fileList"
      >
        <el-button slot="trigger" size="small" type="primary">導(dǎo)入資產(chǎn)</el-button>
        <!-- <div class="el-upload__text">將文件拖到此處池颈,或<em>點擊上傳</em></div> -->
        <div class="el-upload__tip" slot="tip">只能上傳xlsx文件,且不超過10M</div>
      </el-upload>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="uploadFile">確 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>


<script>
export default {
  data() {
    return {
        limitNum: 1,  // 上傳excell時钓丰,同時允許上傳的最大數(shù)
        fileList: [],   // excel文件列表
        dialogVisible: false,
    };
  },
  methods: {
    UploadUrl() {
      // 因為action參數(shù)是必填項躯砰,我們使用二次確認(rèn)進(jìn)行文件上傳時,直接填上傳文件的url會因為沒有參數(shù)導(dǎo)致api報404携丁,所以這里將action設(shè)置為一個返回為空的方法就行琢歇,避免拋錯
      return "";
    },
    // 文件超出個數(shù)限制時的鉤子
    exceedFile(files, fileList) {
      this.$message.warning(
        `只能選擇 ${this.limitNum} 個文件,當(dāng)前共選擇了 ${files.length +
          fileList.length} 個`
      );
    },
    // 文件狀態(tài)改變時的鉤子
    fileChange(file, fileList) {
      console.log(file.raw);
      this.fileList.push(file.raw);
      console.log(this.fileList);
    },
    // 上傳文件之前的鉤子, 參數(shù)為上傳的文件,若返回 false 或者返回 Promise 且被 reject梦鉴,則停止上傳
    beforeUploadFile(file) {
      console.log("before upload");
      console.log(file);
      let extension = file.name.substring(file.name.lastIndexOf(".") + 1);
      let size = file.size / 1024 / 1024;
      if (extension !== "xlsx") {
        this.$message.warning("只能上傳后綴是.xlsx的文件");
      }
      if (size > 10) {
        this.$message.warning("文件大小不得超過10M");
      }
    },
    // 文件上傳成功時的鉤子
    handleSuccess(res, file, fileList) {
      this.$message.success("文件上傳成功");
    },
    // 文件上傳失敗時的鉤子
    handleError(err, file, fileList) {
      this.$message.error("文件上傳失敗");
    },
    uploadFile() {
      if (this.fileList.length === 0) {
        this.$message.warning("請上傳文件");
      } else {
        let form = new FormData();
        form.append("file", this.fileList[0]);
        this.$emit('uploadFile',form)
         this.fileList = [];
      }
    }
  }
};
</script>

<style scoped>
</style>

封裝的請求

import axios from 'axios'
// 導(dǎo)入表格
export const uploadXlsx= (url,data)=>{
    return axios({
        method: "post",
        url: `${url}`,
        headers: {
        "Content-type": "multipart/form-data"
        },
        data: data
    })
}

main.js引用

import { uploadXlsx } from "./utils/api";
Vue.prototype.uploadXlsx = uploadXlsx;

頁面

import imporExcel from './imporExcel';//先引入組件(組件跟頁面同級目錄)
<el-button type="warning" size="small" @click="imporRuItem">導(dǎo)入資產(chǎn)</el-button>//導(dǎo)入按鈕點擊出現(xiàn)彈框
 // 導(dǎo)入
    imporRuItem(){
        this.dialogVisible=true
         this.$nextTick(() => {
            this.$refs["dialogCom"].dialogVisible = true;
          });
    },
    // 發(fā)送請求
    uploadFile(form) {
        this.uploadXlsx('/property/insertProperty',form).then(res=>{
             this.dialogVisible=false
             this.fetchData()//重新獲取自己表格列表的數(shù)據(jù)
        })
    },

完整寫下來就跟上面一樣的效果了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末李茫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子肥橙,更是在濱河造成了極大的恐慌魄宏,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件存筏,死亡現(xiàn)場離奇詭異宠互,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)椭坚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門予跌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人善茎,你說我怎么就攤上這事券册。” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵汁掠,是天一觀的道長略吨。 經(jīng)常有香客問我,道長考阱,這世上最難降的妖魔是什么翠忠? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮乞榨,結(jié)果婚禮上秽之,老公的妹妹穿的比我還像新娘。我一直安慰自己吃既,他們只是感情好考榨,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鹦倚,像睡著了一般河质。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上震叙,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天掀鹅,我揣著相機(jī)與錄音,去河邊找鬼媒楼。 笑死乐尊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的划址。 我是一名探鬼主播扔嵌,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼夺颤!你這毒婦竟也來了痢缎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤世澜,失蹤者是張志新(化名)和其女友劉穎独旷,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宜狐,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡势告,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年蛇捌,在試婚紗的時候發(fā)現(xiàn)自己被綠了抚恒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡络拌,死狀恐怖俭驮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤混萝,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布遗遵,位于F島的核電站,受9級特大地震影響逸嘀,放射性物質(zhì)發(fā)生泄漏车要。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一崭倘、第九天 我趴在偏房一處隱蔽的房頂上張望翼岁。 院中可真熱鬧,春花似錦司光、人聲如沸琅坡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽榆俺。三九已至,卻和暖如春坞淮,著一層夾襖步出監(jiān)牢的瞬間茴晋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工碾盐, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留晃跺,地道東北人。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓毫玖,卻偏偏與公主長得像掀虎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子付枫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359