美文网首页让前端飞Web前端之路
纯js实现json文件读取处理下载

纯js实现json文件读取处理下载

作者: alanwhy | 来源:发表于2020-06-01 14:51 被阅读0次

需求分析

用户上传 json 文件,客户端进行处理解析后,返回进行下载

技术选型

基于本身的项目采用了 vue + elementUI 的前端框架开发,使用 FileReaderfile-saver 进行数据的读取和写入

具体实现

1.模板部分
<template>
  <div class="style-2to3">
    <el-card class="box-card">
      <div class="container">
        <el-upload
          class="upload-demo"
          ref="upload"
          drag
          action="/file/upload"
          accept=".json"
          :limit="1"
          :auto-upload="false"
        >
          <i class="el-icon-upload"></i>
          <div class="el-upload__text">
            将JSON文件拖到此处,或
            <em>点击上传</em>
          </div>
        </el-upload>
      </div>
    </el-card>
  </div>
</template>
2.上传后 input 状态修改监听

写在 mounted 中,直接初始化

mounted() {
    const input = document.querySelector('input[type=file]');
    input.addEventListener(
      'change',
      () => {
        if (input.files && input.files.length) {
          const reader = new FileReader();
          reader.readAsText(input.files[0], 'utf8'); // input.files[0]为第一个文件
          reader.onload = () => {
            // reader.result 就是文件内容
            console.log(JSON.stringify(JSON.parse(reader.result)))
          };
        }
      },
      false
    );
  },
3.处理后的 json 数据,进行下载保存

采用插件 file-saver 进行保存

import FileSaver from 'file-saver';

...

saveAs() {
  let name = `transJson_${new Date().getTime()}.json`;
  var file = new File([JSON.stringify(JSON.parse(reader.result))], name, {
    type: 'text/plain;charset=utf-8',
  });
  FileSaver.saveAs(file);
},

相关文章

网友评论

    本文标题:纯js实现json文件读取处理下载

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