前端项目实战130-hook对文件上传进行封装笔记

简介: 前端项目实战130-hook对文件上传进行封装笔记
import React, { useState, useEffect, useCallback, memo } from 'react';
import { Menu } from './service';
import { Select, Table, Button, Modal, message, Card, Form, Tag, DatePicker, Upload, Row, Col, Input, Radio, InputNumber } from 'antd';
import { UploadOutlined } from '@ant-design/icons';
import { getToken } from '@/utils/auth';
import uploadFile from "@/redux/uploadFile";
interface AddOrEditMenuProps {
    visible: boolean;
    menu: Menu | null;
    croppData: any,
    onClose: () => void;
    onConfirm: () => void;
    list: any[]
}
const ExportModel: React.FC<any> = (props: AddOrEditMenuProps) => {
    const { visible } = props
    const [fileLoading, setFileLoading] = useState<boolean>(false)
    const [fileList, setFileList] = useState<any[]>([
    ]);
    const onRemove = (file: any) => {
        setFileList(
            []
        )
        setFileLoading(false)
    }
    const beforeUpload = (file: any) => {
        // 设置上传文件大小小于50M
        const isLt50M = file.size / 1024 / 1024 < 50;
        console.log(file,"data")
        const isJpgOrPng = file.name.split(".")[1] == 'xlsx' || file.type == 'xls';
        if (!isJpgOrPng) {
            message.error('上传的数据格式必须是xlsx或者xls格式');
            return false
        }
        if (!fileList.length) {
            if (!isLt50M) {
                message.error('文件不允许超过50M!');
            } else {
                setFileList(
                    [...fileList, file]
                )
                let formData = new FormData();
                formData.append('file', file)
                uploadFile('manufacture/importData', formData).then((res) => {
                    if (res.code == 200) {
                        message.success("上传成功")
                        setFileLoading(true)
                    }
                })
            }
        } else {
            message.error('只能上传一个文件');
            return false;
        }
    };
    const onOk = (() => {
        props.onConfirm()
    })
    return (
        <div>
            <Modal maskClosable={false}
                width="60%"
                visible={visible}
                title="表格导入"
                onCancel={props.onClose}
                onOk={onOk}>
                <Form.Item
                    labelCol={{ span: 8 }}
                    label="表格导入"
                >
                    <Upload name="file"
                        fileList={fileList}
                        beforeUpload={beforeUpload}
                        onRemove={onRemove}
                        headers={{ "Authorization": getToken() || "" }}
                    >
                        <Button icon={<UploadOutlined />}
                        >上传</Button>
                    </Upload>
                </Form.Item>
            </Modal >
        </div >
    )
}
export default ExportModel
相关文章
|
14天前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
|
14天前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
30 0
|
5天前
|
存储 缓存 算法
前端算法:优化与实战技巧的深度探索
【10月更文挑战第21天】前端算法:优化与实战技巧的深度探索
9 1
|
6天前
|
人工智能 资源调度 数据可视化
【AI应用落地实战】智能文档处理本地部署——可视化文档解析前端TextIn ParseX实践
2024长沙·中国1024程序员节以“智能应用新生态”为主题,吸引了众多技术大咖。合合信息展示了“智能文档处理百宝箱”的三大工具:可视化文档解析前端TextIn ParseX、向量化acge-embedding模型和文档解析测评工具markdown_tester,助力智能文档处理与知识管理。
|
14天前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
|
14天前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
14天前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
|
14天前
|
前端开发 算法 测试技术
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT
本文对比测试了通义千文、文心一言、智谱和讯飞等多个国产大模型在处理基础计数问题上的表现,特别是通过链式推理(COT)提示的效果。结果显示,GPTo1-mini、文心一言3.5和讯飞4.0Ultra在首轮测试中表现优秀,而其他模型在COT提示后也能显著提升正确率,唯有讯飞4.0-Lite表现不佳。测试强调了COT在提升模型逻辑推理能力中的重要性,并指出免费版本中智谱GLM较为可靠。
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT
|
17天前
|
存储 JavaScript 前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
|
26天前
|
前端开发 开发工具 git
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
27 5