欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue項(xiàng)目中實(shí)現(xiàn)多文件上傳功能實(shí)例代碼

 更新時(shí)間:2022年11月28日 15:18:13   作者:zhuoyunluo77  
我們平時(shí)經(jīng)常做的是上傳文件,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目中實(shí)現(xiàn)多文件上傳功能的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

在vue項(xiàng)目中使用elementui 的 upload 上傳組件,完成多個(gè)文件一次上傳

一、效果圖:

1.選擇上傳的文件:

待上傳文件

2、上傳完成:

已上傳文件

3、刪除文件:

待刪除文件

二、主要的代碼實(shí)現(xiàn)

注意處理列表中已上傳文件何待上傳文件,兩者其實(shí)有區(qū)分的標(biāo)志。我們可以在控制臺(tái)中輸出選擇上傳的文件列表,查看每個(gè)文件的代碼信息,觀察可以發(fā)現(xiàn),如果是已上傳的文件,則文件的狀態(tài)status=“success”,如果是待上傳文件,那么文件的狀態(tài)status=“ready”。我們可以通過(guò)文件的狀態(tài)來(lái)處理已上傳至服務(wù)器和待上傳至服務(wù)器的文件。

主要代碼如下:

<template>
<div>
    <el-button type="text" @click="dialogVisible = true">上傳附件</el-button>

   <el-dialog  width="400px" :visible.sync="dialogVisible" append-to-body>
     <div style="float:left">
         <el-upload 
          class="upload-demo"
          ref="upload"
          :limit="10" 
          accept=".txt, .txts, .pdf, .docx" 
          :multiple="true"
          action=" "      
          :on-change="handleFileChange"
          :on-remove="onRemove"
          :before-remove="beforeRemove"
          :on-exceed="fileExceed"
          :auto-upload="false"
          :file-list="fileList" 
          >
          <el-button slot="trigger" size="small" type="primary">選取附件</el-button> 
          <el-button style="margin-left: 10px;" v-if="fileList.length>0" size="small" type="success" @click="submitFileForm">上傳附件</el-button>
       </el-upload>
        </div>
  <div slot="footer" class="dialog-footer">
    
    <el-button @click="dialogVisible = false">取 消</el-button>
    <el-button type="primary" @click="submitFileForm">確 定</el-button>
  </div>
</el-dialog>
</div>
</template>
<script>
import store from "../../../store"
export default{
  name:"uploadFile",
  data() {
    return {
      dialogVisible:false,   
      //回顯附件列表
      fileList: [],
      //上傳附件列表
      files:[],
    };
    
  },
  mounted(){
    //顯示已有附件
     this.getFiles()
  },
   methods:{
   //by文章id獲取附件列表
    getFiles(){
      var articleId=0
      articleId=store.state.articleMsg.row.id
      console.log(articleId)
      this.$store.dispatch('fileManage/getFiles',articleId).then(res=>{
         if(res.succeeded){
           res.data.forEach(file=>{
             this.fileList.push({name:file.fileName,id:file.fileId});
           })
         }
         else
         {
           this.$message({
             type:'error',
             message:'獲取附件失敗'
           })
         }
      })
    },
    //上傳文件之前
    beforeUpload(file){
      this.fileList.forEach(item=>{
      if(isEquael(item.fileName,file.name)){
        return this.$message.warning("該文件已存在")
      }
    })
    },
      // 上傳發(fā)生變化鉤子
    handleFileChange(file, fileList){
      this.files = fileList;
      this.fileList.push(file)
    },
    //文件個(gè)數(shù)超過(guò)最大限制時(shí)
    fileExceed(file, fileList){
      if(this.fileList.length>10){
         this.$message.warning("附件個(gè)數(shù)不能超過(guò)10個(gè)")
      }
    },
    //刪除前的鉤子
     beforeRemove(file, fileList) {
        return this.$confirm(`確定移除 ${ file.name }?`);
      },
    //刪除的鉤子
    onRemove(file,fileList){
     if(file.status==="success")
     {   
       var requestData=file.id
      this.$store.dispatch('fileManage/deleteFile',requestData).then(res=>{
        if(res.succeeded){
        
          this.fileList.pop(file)
          this.fileList=[];
          this.files = fileList;
          this.$message({
            type: 'success',
            message: '刪除成功!'
          });
           this.getFiles()
        }else{
          this.$message({
            type: 'error',
            message: '刪除失敗!'
          });
        }
      }).catch(()=>{
         this.$message({
            type: 'error',
            message: '請(qǐng)求失敗!'
          });
      }) 
     }  
    },
    // 提交上傳文件
    submitFileForm(){
      //判斷是否有文件再上傳
      if (this.files.length === 0) {
          return this.$message.warning('請(qǐng)選取文件后再上傳')
      }
      //-- 創(chuàng)建新的數(shù)據(jù)對(duì)象 -->
      let formData = new FormData();
      //-- 將上傳的文件放到數(shù)據(jù)對(duì)象中 -->
      this.files.forEach((file) =>{
       
        formData.append('files',file.raw)
      })
        //拿到文章id
      var articleid=store.state.articleMsg.row.id
      formData.append('articleid',articleid)
      this.$store.dispatch('fileManage/uploadFile',formData)
        .then(res => {
          if(res.succeeded){
            this.$message.success('上傳成功!');
            this.fileList=[]
            this.getFiles()
          }else{
            this.$message.error('上傳失敗');
          }
        })
        .catch(error => {
          this.$message.error('上傳失??!');
        });
      this.dialogVisible=false
    } 
    
  }
 
}
</script>

總結(jié)

到此這篇關(guān)于vue項(xiàng)目中實(shí)現(xiàn)多文件上傳功能的文章就介紹到這了,更多相關(guān)vue多文件上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue中動(dòng)態(tài)Class實(shí)戰(zhàn)示例

    Vue中動(dòng)態(tài)Class實(shí)戰(zhàn)示例

    這篇文章主要為大家介紹了Vue中動(dòng)態(tài)Class的實(shí)戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • vue+element-ui JYAdmin后臺(tái)管理系統(tǒng)模板解析

    vue+element-ui JYAdmin后臺(tái)管理系統(tǒng)模板解析

    這篇文章主要介紹了vue+element-ui JYAdmin后臺(tái)管理系統(tǒng)模板解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 詳解vue-cli 腳手架 安裝

    詳解vue-cli 腳手架 安裝

    這篇文章主要介紹了vue-cli腳手架安裝,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 深入理解Vue父子組件生命周期執(zhí)行順序及鉤子函數(shù)

    深入理解Vue父子組件生命周期執(zhí)行順序及鉤子函數(shù)

    本文通過(guò)實(shí)例代碼給大家介紹了Vue父子組件生命周期執(zhí)行順序及鉤子函數(shù)的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-08-08
  • vue前端更新后需要清空緩存代碼示例

    vue前端更新后需要清空緩存代碼示例

    這篇文章主要給大家介紹了關(guān)于vue前端更新后需要清空緩存的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-10-10
  • Vue resource中的GET與POST請(qǐng)求的實(shí)例代碼

    Vue resource中的GET與POST請(qǐng)求的實(shí)例代碼

    本篇文章主要介紹了Vue resource中的GET與POST請(qǐng)求的實(shí)例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-07-07
  • vue-router定義元信息meta操作

    vue-router定義元信息meta操作

    這篇文章主要介紹了vue-router定義元信息meta操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 前端開(kāi)發(fā)利器Vite完整版詳解

    前端開(kāi)發(fā)利器Vite完整版詳解

    這篇文章主要給大家介紹了關(guān)于前端開(kāi)發(fā)利器Vite完整版詳解的相關(guān)資料,Vite是一種基于ES模塊的開(kāi)發(fā)服務(wù)器和構(gòu)建工具,專為現(xiàn)代化的前端開(kāi)發(fā)而設(shè)計(jì),需要的朋友可以參考下
    2023-11-11
  • vue v-for循環(huán)重復(fù)數(shù)據(jù)無(wú)法添加問(wèn)題解決方法【加track-by=''索引''】

    vue v-for循環(huán)重復(fù)數(shù)據(jù)無(wú)法添加問(wèn)題解決方法【加track-by=''索引''】

    這篇文章主要介紹了vue v-for循環(huán)重復(fù)數(shù)據(jù)無(wú)法添加問(wèn)題解決方法,結(jié)合實(shí)例形式分析了vue.js通過(guò)在v-for循環(huán)中添加track-by='索引'解決重復(fù)數(shù)據(jù)無(wú)法添加問(wèn)題相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • vue父組件異步傳遞props值,子組件接收不到解決方案

    vue父組件異步傳遞props值,子組件接收不到解決方案

    這篇文章主要介紹了vue父組件異步傳遞props值,子組件接收不到解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評(píng)論