一、本地上传获取本地文件数据(无需其他按钮触发)

<template>
    <el-upload 
        ref="upload" 
        action="alert"  
        :file-list="uploadFiles"
        :on-progress="importSubmit" 
        :limit='1' 
        :show-file-list="false">
             <el-button type="primary" plain &gt;导入</el-button&gt;
    </el-upload&gt;
</template&gt;
<script&gt;
export default {
    data() {
        return {
            uploadFiles: [],
        }
    },
    methods: {
        importSubmit(e,file,fileList) {
            // 解析上传文件
            // let file = this.uploadFiles[0]
            let reader = new FileReader()
            // abort none 中断读取
            // readAsBinaryString file文件读取二进制码,通常我们将它传送到后端,后端可以通过这段字符串存储文件
            // readAsDataURL file文件读取为 DataURL,一段以 data: 开头的字符串,这段字符串的实质就是 Data URL,Data URL是一种将小文件直接嵌入文档方案这里的小文件通常是指图像html格式文件
            // readAsText file, [encoding] 将文件读取文本读取结果即是这个文本文件中的内容
            reader.readAsText(file.raw)
            // onabort 中断时触发
            // onerror 出错时触发
            // onload 文件读取成功完成时触发
            // onloadend 读取完成触发,无论成功或失败
            // onloadstart 读取开始时触发
            // onprogress 读取中
            reader.onload = (e) => {
                // 读取文件内容
                const fileString = e.target.result
                // 接下来可对文件内容进行处理
            }
        },
    }
}
</script>

on-progress:文件上传时的钩子,function(event, file, fileList)

使用方法可以选择上传文件,点击打开】后,立即触发,无需其他按钮触发上传

 

 二、确认按钮触发上传

<template>
    <el-upload 
        class="upload-demo"
        ref="upload"
        action="https://jsonplaceholder.typicode.com/posts/"
        :on-preview="handlePreview"
        :on-remove="handleRemove"
        :file-list="fileList"
        :auto-upload="false">
              <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
              <el-button style="margin-left: 10px;" size="small" type="success"                                       
                         @click="submitUpload">上传到服务器</el-button>
              <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
    </el-upload>
</template>
<script>
export default {
    data() {
        return {
            fileList: [],
        }
    },
    methods: {
        handleRemove(file, fileList) {
            console.log(file, fileList);
        },
        handlePreview(file) {
            console.log(file);
        }
        submitUpload(e,file,fileList) {
           this.$refs.upload.submit();//将文件上传到服务器
        },
    }
}
</script>

  action   必选参数,上传的地址为后端上传接口地址

   this.$refs.upload.submit() 调用后端的上传接口地址点击按钮触发

三、样式调整

<el-upload 
    class="upload-demo" 
    :limit="1" 
    ref="upload" 
    action="" 
    :file-list="fileList" 
    :show-file-list="false"
    :on-progress="submitUpload">
        <el-tooltip class="item" effect="dark" content="导入" placement="top">
          <el-button style="font-size: 20px" type="text" icon="el-icon-upload2"         @click="showUpload"></el-button>
        </el-tooltip>
</el-upload>

出现了独占一行的情况

解决办法1、css样式调整

                  2、el-upload与按钮开放置,el-upload可随意放置位置,按钮showUpload方法控制el-upload的div显隐

<template>
    <el-tooltip 
        class="item" 
        effect="dark" 
        content="导入"
        placement="top">
            <el-button style="font-size: 20px" type="text" icon="el-icon-upload2"
                        @click="showUpload">
            </el-button>
    </el-tooltip>
    <el-upload 
        class="upload-demo" 
        :limit="1" 
        ref="upload" 
        action="" 
        :file-list="fileList" 
        :show-file-list="false"
        :on-progress="submitUpload">
    </el-upload>
</template>
<script>
export default {
    data() {
        return {
            fileList: [],
        }
    },
    methods: {
        showUpload() {
            this.$refs["upload"].$refs["upload-inner"].handleClick();//打开el-upload
        },
    }
}    
</script>

     

                           

原文地址:https://blog.csdn.net/weixin_44126032/article/details/132623030

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_24848.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注