input type=file 捕捉完成选择事件

本文介绍了一种解决在使用FileReader API时,连续两次上传相同文件导致无法触发读取事件的方法。通过将input元素的value属性清空,确保每次都能正确触发文件读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:第一次选择文件或每次都选择不同文件时好使,但如果我两次都选择同一个文件,就触发不了了;
解决:将value置为空,就解决了。

  importMetaDataObject(e: any): void {
    if (!window.FileReader) {
      this.$notify.error('您的浏览器不支持FileReader!请升级浏览器');
      return;
    }
    let reader: any = new FileReader();
    const self: any = this;
    reader.onload = (): any => {
      const fileData = reader.result;
      const wb = XLSX.read(fileData, {
        type: 'binary'
      });
      const excelTd = wb.SheetNames.map((key: any) => XLSX.utils.sheet_to_json(wb.Sheets[key]));
      const data = {
        metaattrsList: excelTd[1],
        metamappingList: excelTd[2],
        metaObjList: excelTd[0]
      };
      self.http
        .post('xxx/xxxx/xxx ', data)
        .then((res: any) => {
          if (res.statusCode == 0) {
            self.$notify.success(res.repMessage);
            reader = null;
            self.$refs.impData.value = '';
          }
        });
    };
    reader.readAsBinaryString(e.target.files[0]);
    e.target.files = null;
  }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值