antd-vue上传文件,并读取文件内容

需求:antd-vue 点击上传wsdl文件,先读取wsdl文件中的内容进行展示。

上传使用 a-upload 组件

vue页面代码

 <a-form :form="form">
	   <a-form-item
      label="WSDL文件"
      :labelCol="{xs: { span: 24 },sm: { span: 3}}"
      :wrapperCol="{xs: { span: 24 },sm: { span: 20 }}"
      has-feedback
    >
      <a-textarea :rows="4" placeholder="上传WSDL文件" v-decorator="['serviceWsdl',{rules:[{required: true, message: '请上传WEDL文件!' }]}]"></a-textarea>

      <a-upload
        accept=".wsdl"
        :beforeUpload="beforeUpload"
        :showUploadList="false"
        name="file"
      >
        <a-button>
          上传
        </a-button>
      </a-upload>

    </a-form-item>
</a-form>

js代码

beforeCreate() {
      // 读取文件
      FileReader.prototype.reading = function ({encode} = pms) {
        let bytes = new Uint8Array(this.result);    //无符号整型数组
        let text = new TextDecoder(encode || 'UTF-8').decode(bytes);
        return text;
      };
      /* 重写readAsBinaryString函数 */
      FileReader.prototype.readAsBinaryString = function (f) {
        if (!this.onload)       //如果this未重写onload函数,则创建一个公共处理方式
          this.onload = e => {  //在this.onload函数中,完成公共处理
            let rs = this.reading();
            console.log(rs);
          };
        this.readAsArrayBuffer(f);  //内部会回调this.onload方法
      };
 },
methods:{
	/**
	 * 上传wsdl,并解析文件
	 */
	beforeUpload(file) {
	  console.log('上传前校验--文件类型', file)
	  this.fileList = [file]
	  console.log('选择了文件beforeUpload', this.fileList)
	  // 读取数据
	  this.read(file);
	  return false
	},
	/**
	 * 读取数据
	 */
	read(f) {
	  let rd = new FileReader();
	  rd.onload = e => {
	    //this.readAsArrayBuffer函数内,会回调this.onload函数。在这里处理结果
	    let cont = rd.reading({encode: 'GBK'})
	    console.log('数据', cont)
	    // 这个是我前端页面填充读取的wsdl数据的
	    this.form.setFieldsValue({ serviceWsdl: cont })
	    let  formerData = this.textData
	    this.textData = formerData + "\n" + cont
	  }
	  rd.readAsBinaryString(f)
	},
}

ok啦

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值