美文网首页
前端导入上传excel等文件

前端导入上传excel等文件

作者: sssgoEasy | 来源:发表于2019-11-27 11:13 被阅读0次

input type="file" 原生属性

  • vue中用法:
    图一(打开前):


    image.png

    图二(打开后):


    image.png

代码:

1.用于自定义展示input
      <el-input
            type="text"
            size="mini"
            v-model="excelName"
            style="width:300px;marginRight:20px;"
        ></el-input>
2.input file本体,隐藏展示
      <input
            type="file"
            id="uploadExcel"
            ref="uploadExcel"
            v-show="false"
            accept=".xls, .xlsx, .excel"
            @change="readExcel"
        />
3.触发打开文件按钮
      <div type="text" @click="importExcel" class="btnText uploadBtn">浏览</div>
4.发起axios请求按钮
      <el-button round class="bigBtn" @click="gmDrSure" size="medium ">批量导入</el-button>
method:
        //打开文件
        importExcel () {
            this.$refs.uploadExcel.click();
        },
        //读取文件
        readExcel (event) {
            let fileList = event.target.files;
            this.excelName = fileList[0].name
            this.excelFile = this.$refs.uploadExcel.files[0];
            // console.log(fileList, this.excelFile)
            // const loadinginstace = Loading.service({ fullscreen: true, background: 'rgba(0, 0, 0, 0.1)', text: '文件读取中,请稍等' })
            // //
            // let reader = new FileReader()
            // reader.readAsDataURL(fileList[0])
            // reader.onloadstart = function () {
            //     console.log('ss')
            // }
            // reader.onload = function (e) {
            //     // console.log(reader.result)
            //     loadinginstace.close();
            // }
        },
        //发送请求
        gmDrSure () {
            this.uploadDialog = false
            let formData = new FormData()
            formData.append('file', this.excelFile);
            console.log('formData', formData)
            if(this.excelName==='' ) return this.$message.warning('请先选择excel文件')
            //上传excel
            upload.uploadMember(formData).then(res => {
                console.log(res)
                if (res.result == 0) {
                    this.$message.success('上传成功~')
                    this.getMemberList()
                    let obj=this.$refs.uploadExcel
                    obj.outerHTML=obj.outerHTML;
                    this.excelFile = ''
                    this.excelName = ''
                }
            })
        },

总结:

  1. 请求头headers设置:"Content-Type": "multipart/form-data"
  2. 主要使用input原生属性file,通过new FormData()新建和append添加
    let formData = new FormData()
    formData.append('file', this.excelFile);
  3. 针对文件,通过console.log('formData', formData)打印不出内容,一般会显示空对象,通过Network可以查看参数
  • console.log() formData
  • Form Data(view parsed):


    view parsed
  • Form Data(view source):


    view source
  • 清除input file

                let obj=this.$refs.uploadExcel
                obj.outerHTML=obj.outerHTML;
  • 下载模板
        //下载模板
        handleDownload () {
            window.open('https://url/导入会员模板.xls')
        }

相关文章

网友评论

      本文标题:前端导入上传excel等文件

      本文链接:https://www.haomeiwen.com/subject/mbzuwctx.html