使用vue+iview實現上傳文件及常用的下載文件的方法


首先說明一下,我們這次主要用的還是iview的upload上傳組件,下面直接上代碼

<Upload 
            ref="upload"
            multiple='true'   //是否支持多文件上傳
            :show-upload-list="true"  //顯示上傳的文件
            :before-upload="handleUpload" //上傳前需要的一些操作
            :data="uploadFile"  //上傳的文件保存的地方
            :on-success="uploadSuccess"   //上傳成功時調用的方法
            :headers='{"Authorization": session}' //這里是設置的請求頭token
            :action="actionUrl" //這是上傳時的后台接口
        >
            選擇Excel文件:<Button icon="ios-cloud-upload-outline">選擇上傳文件</Button>
        </Upload>
        <!-- <Button type="primary" @click="clear" >清空上傳記錄</Button> //這里是手動上傳的時候 清空之前的上傳記錄 或者點擊的錯誤文件-->
        <!-- <Button type="primary" @click="upload" >點擊上傳文件</Button> //如果不設置則為自動上傳,這里可以設置手動上傳文件-->

下面是上傳時我們需要調用的一些方法

        importExcel(url){
                this.modalImport = true;
                this.$refs.upload.clearFiles();//清除上次上傳記錄
                this.file = [];
                this.uploadFile = [];
            },
            uploadSuccess(response, file, fileList){
                this.$Message.info(response.msg);
                // this.modalImport = false
                debugger
                this.init(0, 20);
            },
            clear(){
                this.$refs.upload.clearFiles();//清除上次上傳記錄
            },
            handleUpload (file) { // 上傳文件前的事件鈎子
                
                // 選擇文件后 這里判斷文件類型 保存文件 自定義一個keyid 值 方便后面刪除操作
                let keyID = Math.random().toString().substr(2);
                file['keyID'] = keyID;
                // 保存文件到總展示文件數據里
                this.file.push(file);
                // 保存文件到需要上傳的文件數組里
                this.uploadFile.push(file)
                // 返回 falsa 停止自動上傳 我們需要手動上傳
                //如果需要手動上傳文件,需要把這里注釋放開並放開上面代碼塊中的被注釋的兩個按鈕,就可以進行手動上傳了
                //return false
            },
            upload () { // 上傳文件
                for (let i = 0; i < this.uploadFile.length; i++) {
                    let item = this.file[i]
                    this.$refs.upload.post(item);
                }
                
            },    

上傳文件大概就是這樣了,關鍵的代碼部分也給出了注釋,希望能幫到大家。

 

 

 

既然有了上傳文件,那就順便把下載文件的也一起說了吧 !其實下載文件比較簡單點,直接看代碼吧!!!

exportExcel(url){
                if(this.data.length == 0){
                    this.$Message.info('當前列表暫無數據!')
                    return;
                }
                let url1 = this.GLOBAL.BASE_URL + url,
                sessionId = Cookies.get('status'),
                form = $('<form></form>').attr('action',url1).attr('method','post');
                form.append($('<input></input>').attr('type','hidden').attr('name','Authorization').attr('value',sessionId));
                form.appendTo('body').submit().remove();
            },

下載文件主要就是請求頭的設置,這里不是iview的下載文件組件,是自己常用的一種,如果有更好的方法歡迎大家踴躍指出

 

下面是我的公眾號,歡迎大家關注,可以一起學習一起進步:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM