【Antd】基于 Upload 组件,导入Json文件并转换为Json数据

文章目录

组件封装

js 复制代码
import { Upload, message } from 'antd';

export default function JsonFileImport({ onFileImport }) {
  // 处理文件选择变化
  const handleChange = (info) => {
    // 从info对象中获取原始的File对象:cite[5]
    const rawFile = info.file.originFileObj || info.file;

    if (rawFile) {
      // 1. 创建FileReader读取文件
      const reader = new FileReader();
      reader.onload = (event) => {
        try {
          // 2. 将读取到的文本解析为JSON对象
          const parsedData = JSON.parse(event.target.result);
          // 3. 抛到父组件处理json数据
          onFileImport(parsedData);
          message.success(`${rawFile.name} 文件读取成功`);
        } catch (error) {
          message.error(`${rawFile.name} 文件不是有效的JSON格式`);
          console.error('JSON解析错误:', error);
          onFileImport(null);
        }
      };
      reader.onerror = () => {
        message.error(`读取文件 ${rawFile.name} 失败`);
        onFileImport(null);
      };
      // 4. 开始以文本形式读取文件
      reader.readAsText(rawFile);
    }
  };
  const uploadProps = {
    accept: '.json,.jsonl', // 可选:限制只能选择.json文件:cite[1]
    beforeUpload: () => false, // 阻止自动上传,直接返回文件对象:cite[4]
    onChange: handleChange,
    showUploadList: false, // 不显示默认的文件列表
  };

  return <Upload {...uploadProps}>文件导入</Upload>;
}
相关推荐
腻害兔12 分钟前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:CRM 客户关系模块深度解析——从线索到回款,一套完整的 B2B 销售闭环是怎么搭的?
java·前端·javascript·vue.js·产品经理·ai编程
whyfail19 分钟前
前端学 Spring Boot(2):一次点击,如何穿过整个后端?
前端·spring boot·后端
AI多Agent协作实战派1 小时前
AI多Agent协作系统实战(二十三):Agent读HEARTBEAT.md不读AGENTS.md——openclaw的文件加载之谜
前端·数据库·人工智能·uni-app
gis开发之家1 小时前
《Vue3 从入门到大神37篇》Vue3 源码详解(七):watch 与 watchEffect 源码对比——副作用是如何被追踪的?
javascript·前端框架·vue3·vue3源码
2601_955760072 小时前
如何用 Claude Opus 5 API 批量扩展长尾关键词和文章选题
前端·python·搜索引擎
KaMeidebaby2 小时前
卡梅德生物技术快报|bli亲和力检测gst:告别批量跑胶:BLI实时酶切监测技术加速GST融合蛋白下游流程优化
前端·网络·数据库·人工智能·算法
bloglin999992 小时前
langchain 和 langgraph 和 react
javascript·react.js·langchain
触底反弹2 小时前
🚀 删了数据刷新又回来?3 组件 × 4 回调 × 3 坑讲透 React 父子通信
前端·javascript·react.js
耳东小鹿3 小时前
对象常用方法
前端
程序员海军3 小时前
一个 AI 应用开发程序员的一天,都在屏幕前忙些什么?
前端·后端·程序员