国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue實(shí)現(xiàn)多文件上傳

這篇具有很好參考價(jià)值的文章主要介紹了vue實(shí)現(xiàn)多文件上傳。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

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

一、效果圖:

1.選擇上傳的文件:
vue實(shí)現(xiàn)多文件上傳
2、上傳完成:
vue實(shí)現(xiàn)多文件上傳
3、刪除文件:
vue實(shí)現(xiàn)多文件上傳

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

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

主要代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-496165.html

<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)
    },
    //文件個數(shù)超過最大限制時
    fileExceed(file, fileList){
      if(this.fileList.length>10){
         this.$message.warning("附件個數(shù)不能超過10個")
      }
    },
    //刪除前的鉤子
     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: '請求失敗!'
          });
      }) 
     }  
    },
    // 提交上傳文件
    submitFileForm(){
      //判斷是否有文件再上傳
      if (this.files.length === 0) {
          return this.$message.warning('請選取文件后再上傳')
      }
      //-- 創(chuàng)建新的數(shù)據(jù)對象 -->
      let formData = new FormData();
      //-- 將上傳的文件放到數(shù)據(jù)對象中 -->
      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>

到了這里,關(guān)于vue實(shí)現(xiàn)多文件上傳的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue+elementui中el-upload組件上傳文件時,修改文件名,不用FormData

    vue+elementui中el-upload組件上傳文件時,修改文件名,不用FormData

    今天在開發(fā)的時候,后端突然提了一個需求,因?yàn)樘厥獾奈募蟼鞑贿M(jìn)文件服務(wù)器,所以后端問我能不能上傳的時候給加個擴(kuò)展名,本著只要邏輯沒問題,都可以通過代碼實(shí)現(xiàn)的理念,我說:“可以“”,于是乎有了這篇文章。 首先是去element官網(wǎng)逛了逛,發(fā)現(xiàn)也沒有提供修

    2024年02月06日
    瀏覽(30)
  • 【前端相關(guān)】elementui使用el-upload組件實(shí)現(xiàn)自定義上傳

    【前端相關(guān)】elementui使用el-upload組件實(shí)現(xiàn)自定義上傳

    elmentui 中的upload默認(rèn)的提交行為是通過 action 屬性中輸入的 url 鏈接,提交到指定的服務(wù)器上。但是這種url提交文件的方式,在實(shí)際的項(xiàng)目環(huán)境中往往是不可取的。 我們的服務(wù)器會攔截所有的請求,進(jìn)行權(quán)限控制,密鑰檢查,請求頭分析等安全行為控制。寫在這里的url無法實(shí)

    2024年02月08日
    瀏覽(28)
  • ElementUI —— Upload 文件上傳

    前言 : ? ? ? ? ? ?實(shí)現(xiàn)單文件上傳!此文章僅記錄代碼如何實(shí)現(xiàn),便于后期項(xiàng)目學(xué)習(xí)使用!! 代碼實(shí)現(xiàn) :

    2024年02月16日
    瀏覽(30)
  • elementui el-upload 上傳文件

    在使用element中的el-upload上傳文件或者圖片時,需要先把el-upload的自動上傳改為手動上傳:auto-upload=“false”然后el-upload內(nèi)部會調(diào)用this.$refs.upload.submit();方法,從而實(shí)現(xiàn)多個文件上傳。 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 代碼如下(示例): 需要注意的是 acce

    2024年02月06日
    瀏覽(31)
  • vue 使用 el-upload 上傳文件(自動上傳/手動上傳)

    vue 使用 el-upload 上傳文件(自動上傳/手動上傳) 上傳 上傳

    2024年02月13日
    瀏覽(110)
  • elementUI+el-upload 上傳、下載、刪除文件以及文件展示列表自定義為表格展示

    elementUI+el-upload 上傳、下載、刪除文件以及文件展示列表自定義為表格展示

    官方文檔 https://element.eleme.cn/#/zh-CN/component/upload 具體參數(shù)說明,如何實(shí)現(xiàn)上傳、下載、刪除等功能 action :文件上傳地址,我的項(xiàng)目里已經(jīng)封裝好了請求。使用的時候需要依據(jù)項(xiàng)目填寫。 show-file-list : 是否顯示已上傳文件列表。 headers :設(shè)置上傳的請求頭部。我的項(xiàng)目需要傳

    2024年01月20日
    瀏覽(99)
  • antd+Vue 3實(shí)現(xiàn)table行內(nèi)upload文件圖片上傳【超詳細(xì)圖解】

    antd+Vue 3實(shí)現(xiàn)table行內(nèi)upload文件圖片上傳【超詳細(xì)圖解】

    目錄 一、背景 二、效果圖 三、代碼 一名被組長逼著干前端的苦逼后端,在一個晴天霹靂的日子,被要求前端訂單產(chǎn)品實(shí)現(xiàn)上傳產(chǎn)品圖片并立刻回顯圖片。

    2024年04月11日
    瀏覽(27)
  • 應(yīng)用開發(fā)平臺前端集成vue-simple-uploader實(shí)現(xiàn)文件分塊上傳

    應(yīng)用開發(fā)平臺前端集成vue-simple-uploader實(shí)現(xiàn)文件分塊上傳

    文件的上傳是系統(tǒng)的必備功能,Element提供了上傳組件upload,也基本能滿足常見常用的文件上傳功能,特別是應(yīng)對小型文件(10M以下)的處理。但如果是遇到要求更多更高的場景,上傳幾百兆甚至上G的視頻文件,要求分塊上傳,能斷點(diǎn)續(xù)傳,顯示進(jìn)度,能暫停,能重試……這

    2024年02月08日
    瀏覽(94)
  • 【Java項(xiàng)目】Vue+ElementUI+Ceph實(shí)現(xiàn)多類型文件上傳功能并實(shí)現(xiàn)文件預(yù)覽功能

    【Java項(xiàng)目】Vue+ElementUI+Ceph實(shí)現(xiàn)多類型文件上傳功能并實(shí)現(xiàn)文件預(yù)覽功能

    先說一下我們的需求,我們的需求就是文件上傳,之前的接口是只支持上傳圖片的,之后需求是需要支持上傳pdf,所以我就得換接口,把原先圖片上傳的接口換為后端ceph,但是其實(shí)大致的處理流程都差不多,都是上傳到后端然后得到url地址。 要實(shí)現(xiàn)點(diǎn)擊預(yù)覽文件,那么就需

    2024年02月15日
    瀏覽(25)
  • vue3+elementui-plus實(shí)現(xiàn)一個接口上傳多個文件

    vue3+elementui-plus實(shí)現(xiàn)一個接口上傳多個文件

    首先,先使用element-plus寫好上傳組件,變量的定義我在這里就省略了都 然后,綁定的函數(shù)都補(bǔ)充一下 然后,假設(shè)有個提交按鈕,點(diǎn)擊上傳文件請求接口 既然有編輯,那就應(yīng)該做回顯的邏輯,文件如何回顯到上傳組件上 over 以上主要通過代碼說明,可根據(jù)自己實(shí)際情況改造

    2024年02月13日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包