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

vue2+element ui 上傳文件

這篇具有很好參考價值的文章主要介紹了vue2+element ui 上傳文件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

完全基于elementui組件封裝的上傳組件 ,后期繼續(xù)優(yōu)化

<template>
    <div>
        <el-upload
            class="upload-demo"
            :headers="headers"
            :data='uploadData'
            :action="action"
            :on-preview="handlePreview"
            :on-remove="handleRemove"
            :on-success='handleSuccess'
            :before-remove="beforeRemove"
            :before-upload='beforeUpload'
            :multiple='false'
            :limit="10"
            :on-exceed="handleExceed"
            :file-list="fileList">
            <el-button size="small" type="primary">點擊上傳</el-button>
            <div slot="tip" class="el-upload__tip">只能上傳<span v-for="(v,i) in fileTypeList" :key="i">.{{v}}<i v-if="i+1 < fileTypeList.length"></i></span>等格式文件,最大10M</div>
            </el-upload>
        <el-dialog class="common-dialog" title="詳情" v-if="preview" :visible.sync="preview" width="1000rem" append-to-body>
            <div>
                  <img style="width: 100%; height:800px;" :src="currentImg" alt="">
            </div>
        </el-dialog>  
    </div>

</template>
<script>
    import * as config from '@/common/env.json';
    export default {
        // list:文件列表 數(shù)組,fieldName 字段名, prefix 是 prefix對應(yīng)的 參數(shù)名
        props:['List','fieldName','prefix'],
        data() {
            return {
                // 允許上傳的文件類型
                fileTypeList:['png','jpg','jpeg','gif','slx','xlsx','doc','docx','pdf'],
                fileList:[],
                // 傳給后端的參數(shù)
                uploadData:{},
                // 設(shè)置請求頭
                headers:{
                    token:sessionStorage.getItem('token')
                },
                // 設(shè)置請求地址
                action: (process.env.NODE_ENV == 'development'? config.serviceUrlDev: config.serviceUrlProd)+'control/file/uploadFile', //action就寫成上傳文件的接口我這里是動態(tài)設(shè)置請求地址
                preview: false,
                currentImg:null,
                fileUrl:null,
            }
        },
        created() {
            this.fileUrl = process.env.NODE_ENV == 'development' ? config.serviceUrlDev + config.fileService : config.serviceUrlProd + config.fileService;
            this.uploadData={ prefix:this.prefix}
        },
        watch:{
        //深度監(jiān)聽 不知道這步起效果沒有
            List:{
                  handler(n, o){
                    if(n){
                        this.fileList=n;
                    }
                  },
                  immediate: false
            }
        },
        methods: {
        //拼接圖片完整地址
            funPicture(item) {
                return this.fileUrl + item;
            },
            //刪除文件方法
            handleRemove(file, fileList) {
                let data=[];
                for(let i of  fileList){
                    data.push(i.url)
                }
                let  dataStr=(data && data.length !=0) ? data.join(','):'';
                this.$emit('uploadDone',dataStr,this.fieldName)
            },
            //點擊文件列表的文件觸發(fā)的事件
            handlePreview(file) {
                console.log(file)
                if( this.$formatFileType(file.name.substring(file.name.lastIndexOf('.') + 1))=='pic'){
                    this.currentImg=this.funPicture(file.url);
                    this.preview=true;
                }else{
                    this.downLoad(file)
                }
            },
            handleExceed(files, fileList) {
                this.$message.warning(`當(dāng)前限制選擇 10 個文件,本次選擇了 ${files.length} 個文件,共選擇了 ${files.length + fileList.length} 個文件`);
            },
            beforeRemove(file, fileList) {
                // return this.$confirm(`確定移除 ${ file.name }?`);
            },
            //上傳之前做文件類型和大小判斷
            beforeUpload(file){
                let arr = file.name.split('.');
                let istrue = this.fileTypeList.indexOf(arr[arr.length - 1]);
                if (istrue == -1) {
                    this.$message.warning('錯誤!文件格式不支持')
                    return false
                }
                if (file.size > 10485760) {
                    this.$message.warning('錯誤!文件大小不能超過10M')
                    return false
                }
                
            },
            //完成上傳的事件 做后續(xù)操作
            handleSuccess(response, file, fileList){
                if(response.success){
                    let data=[];
                    for(let i of this.fileList){
                        data.push(i.url);
                    }
                    data.push(response.data);
                    let  dataStr=data.join(',')
                    this.$emit('uploadDone',dataStr,this.fieldName)
                }
            },
            //下載文件
            downLoad(file) {
                let fileDto = {
                    prefix: 'file/'+file.prefix,
                    fileName: file.name
                }
                this.$api.apiFileDownloadFile(fileDto).then((data) => {
                    const url = window.URL.createObjectURL(new Blob([data], { type: "application/pdf" }))
                    const link = document.createElement('a')
                    link.style.display = 'none'
                    link.href = url
                    link.setAttribute('download', file.name)
                    document.body.appendChild(link)
                    link.click()
                    document.body.removeChild(link)
                })
            },
        }
    }
</script>

父組件使用
1、引入組件文章來源地址http://www.zghlxwxcb.cn/news/detail-766008.html

                                <IDCardUploader   @uploadDone='uploadDone'   :list='formData.cardUpload'  fieldName='cardUpload'   prefix='cardUpload'  ></IDCardUploader>


 uploadDone(val,fileName){
                // console.log(val,fileName)
                this.formData[fileName]=val;
                console.log(this.formData)
            },

到了這里,關(guān)于vue2+element ui 上傳文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 基于vue+Element UI的文件上傳(可拖拽上傳)

    基于vue+Element UI的文件上傳(可拖拽上傳)

    drag: 支持拖拽上傳 action:必選參數(shù),上傳的地址 ref:這里主要是用于文件上傳完成后清除文件的 on-remove:文件列表移除文件時的鉤子 auto-upload:是否在選取文件后立即進行上傳 on-change:文件狀態(tài)改變時的鉤子,添加文件、上傳成功和上傳失敗時都會被調(diào)用 注:這里使用的

    2023年04月08日
    瀏覽(30)
  • vue+element ui 文件上傳之文件縮略圖縮略圖

    vue+element ui 文件上傳之文件縮略圖縮略圖

    文件縮略圖按官方文檔說的是使用? scoped-slot ?去設(shè)置縮略圖模版。且需要上傳的是圖片,因為有預(yù)覽等功能,如果上傳的不是圖片,會顯示不出來。 這里設(shè)置了圖片的格式等,用戶在選擇的時候,會自動校準圖片格式,官方文檔中提供了before-upload方法,可以防止用戶在選擇

    2024年02月11日
    瀏覽(135)
  • Vue element ui + AmazonS3上傳文件功能

    一、在上傳之前,需要先獲取到AWS的S3服務(wù)的Access key ID和Secret access key 二、代碼代碼: 別忘記安裝AWS.S3!! 三、如果上傳失敗,報此錯誤:ETagMissing No access to ETag property on response. Check CORS configuration to expose ETag header. 解決方案: 找到配置的存儲桶——權(quán)限——跨源資源共享

    2024年02月16日
    瀏覽(16)
  • vue+element ui 關(guān)于表格中多行增加上傳文件操作

    先創(chuàng)建一個表格標(biāo)簽,表格中需要先寫上上傳文件的組件 在data中定義一個表格數(shù)組,數(shù)組中的fileIdList是我需要存儲的信息,可自行參考 表格多行上傳的難點在于,需要把上傳的文件和表格中的行一一對應(yīng),所以在handleSuccess和handleRemove方法中多傳入了一個scope,scope參數(shù)是自

    2024年02月14日
    瀏覽(30)
  • Vue3 + Element UI 實現(xiàn)文件上傳彈出框

    Vue3 + Element UI 實現(xiàn)文件上傳 實現(xiàn)如下: 1.首頁添加按鈕點擊彈出文件框 給dialog設(shè)置傳參 展示對話框,設(shè)置 頁面部分代碼如下: 語法部分代碼如下: 2.彈出框 頁面部分代碼如下: 語法部分代碼如下 上述實現(xiàn)彈出框上傳文件事件,當(dāng)文件上傳后需要更新文件管理展示頁面,

    2024年02月11日
    瀏覽(71)
  • vue2,使用element中的Upload 上傳文件,自定義上傳http-request上傳,上傳附件支持多選,多個文件只發(fā)送一次請求,代碼里有注釋

    復(fù)制直接使用,組件根據(jù)multiple是否多選來返回附件內(nèi)容,支持多選就返回數(shù)據(jù)附件,則返回一個附件對象。

    2024年02月10日
    瀏覽(45)
  • Vue Element ui Upload組件在上傳文件時,動態(tài)切換 action上傳路徑

    Vue Element ui Upload組件在上傳文件時,動態(tài)切換 action上傳路徑

    當(dāng)我們在使用 Element ui,Upload組件時,官網(wǎng)默認的基礎(chǔ)配置如下 現(xiàn)在的需求是,如果頁面只有 一個 el-upload組件,需要上傳的文件,根據(jù)不同的類型,切換不同的action 上傳路徑。 首先我這里選擇,通過調(diào)用 before-upload 上傳文件之前的鉤子函數(shù),函數(shù)接收一個參數(shù),就是上傳的

    2024年02月11日
    瀏覽(28)
  • vue前端直接使用element-ui的upload組件上傳到阿里云OSS存儲

    vue前端直接使用element-ui的upload組件上傳到阿里云OSS存儲

    因為公司的服務(wù)器比較拉吧,所以老大決定將數(shù)據(jù)文件等上傳到阿里云服務(wù)器,通過ali-oss方式,這樣的話讀取文件也比較快? (能看到這說明什么安裝element-ui都會了,我就不詳細介紹了,直接跳過)? 在執(zhí)行下面操作之前,你要確定你的阿里云能看到上邊這個頁面? ?這里主

    2024年02月10日
    瀏覽(37)
  • vue結(jié)合element ui 實現(xiàn)多個文件上傳、并刪除不符合條件的

    vue結(jié)合element ui 實現(xiàn)多個文件上傳、并刪除不符合條件的

    多個文件上傳的核心就是將文件append進FormData的實例中,向后臺請求時將實例對象傳送過去。 ?多個文件上傳,傳送的數(shù)據(jù): html部分: js部分(this.$request是我自定義的請求方式,大家可以根據(jù)自身需要來調(diào)整): 1.?我們想要的效果是手動一次性上傳多個文件,但是文件選取

    2024年03月20日
    瀏覽(39)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包