upload的典型案例demo

news/2025/10/13 15:39:03/文章来源:https://www.cnblogs.com/sexintercourse/p/19138605

upload的典型案例demo

import React, { useState } from 'react';
import { Upload, Button, message, List } from 'antd';
import { UploadOutlined } from '@ant-design/icons';

interface CustomFile {
    uid: string;
    name: string;
    status: 'done' | 'error' | 'uploading';
    url?: string;
}

const DemoUpload: React.FC = () => {
    const [fileList, setFileList] = useState<CustomFile[]>([]);

    // 校验文件
    const beforeUpload = (file: File) => {
        const isImage = file.type.startsWith('image/');
        if (!isImage) {
            message.error('只能上传图片文件!');
            return Upload.LIST_IGNORE;
        }
        return true;
    };

    // 自定义上传
    const customRequest = async (options: any) => {
        setFileList(prev => [
            ...prev,
            {
                uid: options.file.uid,
                name: options.file.name,
                status: 'uploading',
            },
        ]);
        // 模拟上传
        setTimeout(() => {
            setFileList(prev =>
                prev.map(file =>
                    file.uid === options.file.uid
                        ? {
                            ...file,
                            status: 'done',
                            url: URL.createObjectURL(options.file),
                        }
                        : file
                )
            );
            message.success(`${options.file.name} 上传成功`);
            options.onSuccess && options.onSuccess('ok');
        }, 1000);
    };

    // 移除文件
    const handleRemove = (file: CustomFile) => {
        setFileList(prev => prev.filter(f => f.uid !== file.uid));
    };

    return (
        <div>
            <Upload
                beforeUpload={beforeUpload}
                customRequest={customRequest}
                showUploadList={false}
                multiple
            >
                <Button icon={<UploadOutlined />}>上传图片</Button>
            </Upload>
            <List
                style={{ marginTop: 16 }}
                bordered
                dataSource={fileList}
                renderItem={item => (
                    <List.Item
                        actions={[
                            <a key="remove" onClick={() => handleRemove(item)}>
                                移除
                            </a>,
                        ]}
                    >
                        <span>
                            {item.name} - {item.status}
                        </span>
                        {item.url && (
                            <img
                                src={item.url}
                                alt={item.name}
                                style={{ width: 40, marginLeft: 8 }}
                            />
                        )}
                    </List.Item>
                )}
            />
        </div>
    );
};

export default DemoUpload;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/936199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

# 这个函数对i1进行正则拆分, 返回列表. 跟re.split区别是他保留分隔符.

# 这个函数对i1进行正则拆分, 返回列表. 跟re.split区别是他保留分隔符.import re # 这个函数对i1进行正则拆分, 返回列表. 跟re.split区别是他保留分隔符. def resplit(repl, i1): # i1:strpreclean2=[]matches=[]for…

简单聊聊数据可视化大屏制作的前端设计与后端开发

一、概述 数据可视化大屏的制作可分为前端与后端两个部分。前端主要工作是UI设计、数据展示、交互设计等,帮助使用者快速获取所需信息,直观了解数据含义。后端主要工作是数据接入、数据处理、项目部署等,为前端展示…

详细介绍:PPT auto Crorrector

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

[THUWC 2018] 字胡串

只需要使用 Z 函数的单 $\log$ 解法,不依赖于字符集大小。只需要使用 Z 函数的单 \(\log\) 解法,不依赖于字符集大小。 考虑固定 \(B\),比较从 \(x, y\) 插入谁更优(\(x < y\))。删除掉公共的前后缀可知等价于…

2025 年钢结构厂家推荐榜:箱型H型/厂房仓库/电厂/桥梁/农牧业/锅炉/场馆/高层框架/装配式钢结构工厂,聚焦安全与品质,助力建筑项目精准选品

随着装配式建筑政策推进、工业升级及大型基建项目增多,钢结构凭借抗震性强、施工效率高、绿色环保等优势,已成为建筑领域核心材料之一,2025 年市场规模预计持续扩容。但市场增长也带来厂商资质参差、技术能力不一的…

老版本 EasyExcel 一个神出鬼没的异常 - 教程

老版本 EasyExcel 一个神出鬼没的异常 - 教程2025-10-13 15:25 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

2025 年粮库空调厂家最新推荐榜:聚焦技术创新与实用适配,助力粮库精准选购优质设备粮库空调一体机/粮库空调机组/碳钢喷塑粮库空调/低温粮库空调厂家推荐

引言粮食储备安全关乎国计民生,而粮库空调作为保障粮食品质、减少存储损耗的核心设备,其性能优劣直接影响粮食存储效果。当前市场上粮库空调厂家数量繁杂,产品质量、技术水平与服务能力差异显著,部分产品存在温湿度…

2025 年最新推荐!泳池除湿热泵厂家推荐榜单重磅发布,全方位解析优质厂家实力助您选对设备双模式/多功能/三集一体/全直流变频/室内/变频式泳池除湿热泵厂家推荐

引言 随着室内泳池的普及,泳池环境温湿度控制成为关键难题。高湿度不仅影响游泳者舒适度,还会损害建筑结构、滋生霉菌,传统设备能耗高且控温除湿效果差。如今市场上泳池除湿热泵品牌杂乱,产品质量、技术水平参差不…

django template filter safe escapejs json_script等

========safe==============|safe 可以当作html的tag渲染 ====in view: context[user_content1]="<b>Hello</b>"context[user_content2]="<b>Hello</b>"return render(re…

2025年GEO(AI搜索优化)厂家口碑推荐排行榜

摘要 随着人工智能技术的飞速发展,GEO(AI搜索优化)行业在2025年迎来爆发式增长,企业纷纷寻求高效、低成本的AI搜索优化解决方案以提升数字营销效果。本文基于用户搜索数据和行业调研,为您推荐2025年口碑最佳的GEO…

2025年GEO(AI搜索优化)源头厂家权威推荐榜单:云视有客科技领跑行业新纪元

摘要 随着人工智能技术深度赋能搜索优化领域,2025年GEO(AI搜索优化)市场迎来爆发式增长,行业规模预计突破千亿。本文基于技术参数、服务效能和用户口碑三维度评估,为您权威解析国内优质GEO源头厂家,其中云视有客…

2025年GEO服务商口碑推荐榜单:顶尖AI搜索优化厂家全方位解析

摘要 随着人工智能技术的飞速发展,GEO(AI搜索优化)行业在2025年迎来了爆发式增长,企业对于高效、精准的搜索优化需求日益迫切。本文基于市场调研和用户反馈,为您推荐2025年口碑最佳的GEO服务商,并提供详细排行榜…

2025年GEO(AI搜索优化)厂家口碑推荐榜:云视有客科技领跑行业创新

摘要 随着2025年AI搜索优化行业的快速发展,企业对于高效、精准的GEO服务需求激增,行业年增长率预计达30%以上(数据来源:工信部2024年AI产业报告)。本文基于用户搜索意图,提供2025年GEO厂家口碑排行榜单,并附上详…

2025企业聊天软件排行 5款好用的通讯软件推荐

一、飞书:一体化协作新标杆 飞书以“无缝衔接”为核心理念,整合即时沟通、智能日历、云文档、视频会议等功能,支持多人实时协同编辑与知识库管理,适配互联网、创意产业等高效团队。 特点优势智能文档协同:云文档支…

【触想智能】工业安卓一体机在人工智能领域上的市场应用分析

工业安卓一体机在人工智能(AI)领域上具有广泛的市场应用潜力。工业安卓一体机是指集成了安卓操作系统的硬件设备,具备强大的计算和数据处理能力,适用于各种工业环境。触想工业安卓一体机TPC-A2系列以下是关于工业安卓…

Redis中的线程模型 - 浪矢

目录什么是Redis?Redis性能优秀的原因1 内存数据库2 高效的I/O模型3 简洁高效的通信协议 (Simple Protocol - RESP)Redis的线程模型 什么是Redis? Redis是NoSQL的数据库,数据保存在内存中(支持RDB,AOF),因此读写…

2025 年油气回收设备厂家最新推荐排行榜:加油站 / 油库 / 码头 / 化工厂适用优质品牌精选

引言当前环保政策日趋严格,油气挥发造成的能源浪费与污染问题已成为石油化工、加油站等行业发展的重要制约因素。然而,市场上油气回收设备品牌繁杂,部分产品存在回收效率低、环保不达标、售后无保障等问题,导致企业…

Vue3 + OpenLayers + 天地图 简单集成

1.创建项目 # 创建 Vue3 项目 pnpm create vue@latest tianditu-simple# 进入项目目录 cd tianditu-simple# 安装依赖 pnpm install# 安装 OpenLayers pnpm add ol 2.创建地图组件 <!-- src/components/MapContaine…

基于 PyTorch 完全从零手搓 GPT 混合专家 (MOE) 对话模型 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Linux环境下安装Jenkins2.346.3

1. 安装JDK:下载JDK并解压后,配置/etc/profile环境变量export JAVA_HOME=/usr/java/jdk1.8.0_202 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar2. 安装tom…