antd upload组件上传表格文件(React jsx TS写法),modal弹窗重新打开时强制销毁历史导入文件

Antd - 上传图片 & 裁剪图片 首先取消默认上传时的接口,在beforeUpload方法return false,来阻止默认上传。即【Upload上传有个action的坑,就是你选择文件之后自动调用地址然后就会执行上传接口,如果不取消会一直有一个失败请求,但不影响主体流程】上传前文件格式校验在上传文件校验或onchange方法中获取上传的文件,进行自定义接口请求传递});if (!message.error('请上传png、jpeg、jpg、webp格式图片');isLt2M) { 阅读详情

根据需求完成下图功能:

  限制只能上传表格文件,本地上传显示进度条,点击确认上传表格数据保存到云端,并关闭弹窗刷新table。

 

// 上传弹窗渲染
const uploadProps: UploadProps = {
  name: 'file',
  action: `${API_HOST}/monitor/monitorAirflowAlarmConfig/uploadFile`,
  // antd 上传组件上传文件成功直接调用上传接口,不符合本次需求所以注释,通过Modal确认按钮去触发
  // headers: {
  //   // 'Content-Type': 'multipart/form-data',
  //   'page-path': '/monitor/scheduling/warningConfig',
  //   'token-id': TOKEN,
  //   'menu-id': '4086dcdd82d8417e9a0294a6454d1894'
  // },
  withCredentials: true,
  maxCount: 1, // 文件最大上传个数
  // 限制类型
  accept: '.csv,.xls,.xlsx, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel', // 限制只能上传表格文件
  beforeUpload: file => {
    const isPNG = ['.csv', '.xls', '.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.ms-excel'].includes(file.type)
    if (!isPNG) {
      message.error(`文件格式不正确!`);
    } else {
      // console.log('beforeUpload', file);
      //转化为formData格式
      const formData = new FormData();
      formData.append('file', file);
      setFormDataParams(formData)
    }
    return isPNG || Upload.LIST_IGNORE;
  },
  onChange: info => {
    if (info.file.status !== 'uploading') {
      console.log('onChange', info, info.fileList);
    }
    if (info.file.status === 'done') {
      setReqUpload(true)
      message.success(`本地导入文件成功,点击确认上传到数据库`);
    } else if (info.file.status === 'error') {
      setReqUpload(false)
      message.error(`本地导入文件失败`);
    } else if (info.file.status === 'removed') {
      setReqUpload(false)
    }
  },
  progress: { // 文件上传展示的上传进度条样式
    strokeColor: {
      '0%': '#108ee9',
      '100%': '#87d068',
    },
    strokeWidth: 3,
    format: percent => percent && `${parseFloat(percent.toFixed(2))}%`,
  },
};

// 上传组件渲染
const basicNodeUpload = (
    <>
      <Upload {...uploadProps}>
        <Button icon={<CloudUploadOutlined />}>上传文件</Button>
      </Upload>
      <div className={styles.uploadRemark}>支持扩展名:.xls .xlsx</div>
    </>
  )

//导入Modal确定
const handleUploadOk = async () => {
  if (!reqUpload) {
    message.error('未导入文件!')
    return
  }
  setLoading(true);
  setRefresh(false)
  try {
    await request.post(`${API_HOST}/monitor/monitorAirflowAlarmConfig/uploadFile`, {
      data: formDataParams,
      requestType: 'form',  // 请求报文类型为表单
      headers: {
        'page-path': '/monitor/scheduling/warningConfig',
        'token-id': TOKEN,
        'menu-id': '4086dcdd82d8417e9a0294a6454d1894'
      },
    }).then((res: any) => {
      setLoading(false);
      if (res.code === '1') {
        message.success(res?.msg || '文件上传成功');
        setRefresh(true)
        Modal.destroyAll(); // 销毁弹窗,这种写法好像不生效不赞成使用
        handleCancelModal()
      } else {
        message.error(res?.msg || '文件上传失败');
      }
    })
  } catch (errorInfo) {
  }
}

// 弹窗
< Modal
  title="文件导入"
  destroyOnClose // 弹窗关闭时销毁组件,解决再次打开时组件内存在历史上传文件!!!
  visible={openUploadModal}
  className={styles.uploadModal}
  onOk={handleUploadOk}
  onCancel={handleCancelModal}
  footer={[
    <Button key="back" onClick={handleCancelModal}>
      取消
    </Button>,
    <Button key="submit" type="primary" loading={loading} onClick={handleUploadOk}>
      确认
    </Button>,
  ]}
>
  {basicNodeUpload}
</Modal>

总结:

  上述方案不完善存在缺陷,成熟方案应该是这样:上传文件触发应该将文件传给后端,后端接收缓存但并不直接存入库中而是返回该文件生成id标识(标识后端生成)给前端。前端拿到标识在此条件下,用户操作确认按钮前端本次仅将id标识传给后端,后端接收后才将对应文件数据保存下来。以上为个人思考,供大家学习讨论。

【React工作记录八十一】ant design upload实现多个文件一次上传(全网首发) 前端 阅读详情

相关推荐

antd 表单提交,文件和表单内容一起提交,表单校验

用很简单的源码实现包含下列 antd 表单相关知识: 1.表单必填校验,规则校验 2.Upload 上传图片,获取上传图片的状态,如上传成功,上传失败,上传进度条,删除上传的文件 3.获取 Input 组件用户输入的值,设置默认值 4.提交表单不刷新页面 5.把上传的图片显示在页面 页面效果图: 提交前 提交后:包括校验失败的场景 t_form.jsx 代码: ...

a_靖的博客 7843

antd Upload手动上传(react)

情况介绍 在antd官方提供的upload组件案例中,都使用了action属性直接上传,唯一手动上传的一个例子(如下图)也不够好用,可能不能满足项目的需求,所以我们需要对其进行一些修改,并加入一些别的方法。 我们经常会使用antd的form表单上传数据,有时就会需要同时上传图片。所以在这里我们需要实现的是,前端页面上传多张图片时,先存储在前端,当表单上传时,和表单数据一起上传到后端。 实现方法 1.初始化 首先,在最前面引入upload组件, import { Button, Form, Input, m

小陈的博客 9185

得物APP破解

本文介绍了得物App(版本4.74.5)的逆向破解过程,重点分析了绕过强制更新、抓包技巧以及破解newSign参数的详细方法。首先通过断网再联网的方式绕过强制更新,然后使用SocksDroid进行抓包分析,发现首页推荐接口需要newSign参数。通过反编译定位到RequestUtils.c方法,利用Frida进行Hook验证,最终解析出newSign的生成逻辑:将请求参数加入固定字段后排序拼接,再进行MD5加密生成签名。文中提供了完整的Hook脚本和签名算法分析,仅供学习移动安全技术参考。

m0_74653634的博客 3482

【React】Antd Upload组件的常用属性以及在表单Form中的使用

Ant Design Upload上传组件常见属性介绍:beforeUpload、defaultFileList、fileList、action、onChange等, 上传文件后点击文件就自动下载对应文件 在Form表单中如何做到数据回显,即配置初始化文件列表数据 不同后缀名的文件显示对应的图标,超过3行显示滚动条,空间上显示3.5行

qq_53512708的博客 6763

探索niri:让你的Linux桌面布局无拘无束

niri是一款基于Wayland的滚动平铺合成器,采用创新的窗口管理方式。它将窗口排列为向右无限延伸的条目,支持独立显示器布局和动态垂直工作区,确保多任务操作流畅性。核心功能包括概要视图、截图界面、屏幕投射、手势操作、窗口分组等,并支持自定义布局和动画效果。niri具备良好的稳定性,兼容xwayland-satellite工具,灵感来自PaperWM但突破了GNOME限制。该项目为追求高效桌面管理的用户提供了全新解决方案,欢迎加入社区交流体验。

weixin_44626085的博客 1816

四阶龙格库塔方法求解一次常微分方程组

四阶龙格库塔方法求解一次常微分方程组一、写在前面二、四阶龙格库塔方法三、使用四阶龙格库塔方法求解一次常微分方程组 一、写在前面 龙格库塔方法是数值求解常微分非线性方程的有利工具,计算精度较高,通过缩短步进距离和增加阶数可以进一步控制误差范围。工程上较为常用的是四阶龙格库塔算法(R-K4),在计算收敛的情况下往往可以得到比较好的结果。 二、四阶龙格库塔方法 这里简单介绍一下算法的具体实现过程,不做详细的推导。其求解的问题是形如方程: y˙=f(y,t),其中t∈[t0,t1]初值y(t0)=c0 \dot{y

HelloWorldTM的博客 2万+

使用antd中的Upload组件上传图片

实现的功能: 上传图片 支持预览和删除 新上传的图片的不支持下载功能,应该是在本地上传的图片没有找到对应的url upload文件 用户可以上传图片并在列表中显示缩略图。当上传照片数到达限制后,上传按钮消失。 import React from 'react'; import { Upload, Icon, Modal, message } from 'antd'; import $state...

weixin_44471622的博客 7793

双RTX 3090实战:如何用vLLM低成本部署Qwen2.5-14B大模型(附避坑清单)

本文详细介绍了如何利用双RTX 3090显卡低成本部署Qwen2.5-14B大模型的完整指南,包括硬件选型、环境配置、vLLM优化及生产环境调优。重点解析了BF16混合精度在显存占用与推理质量上的平衡策略,并提供了实用的避坑清单和性能调优技巧,帮助开发者高效实现大模型部署。

pz890123456的博客 699

Antd和React使用Upload上传组件自定义上传文件(图片为例)

Antd和React使用Upload上传组件自定义上传文件(图片为例)

CHENC0518的博客 3805

手把手教你用Zynq-7100 FPGA实现100Mbps OOK信号定时同步(含完整Verilog代码)

本文详细介绍了如何在Zynq-7100 FPGA平台上实现100Mbps OOK信号的定时同步,涵盖插值算法、Gardner定时误差检测等关键技术。通过完整的Verilog代码和优化技巧,解决了50MHz外部时钟条件下的400MHz采样率同步挑战,为无线通信系统设计提供实用解决方案。

weixin_42522374的博客 301

DCMM评估报告模板样例

这篇DCMM评估报告对某数据管理公司2020年的数据管理能力进行了全面分析。报告显示,该公司在数据战略方面取得初步进展,但在数据治理和数据架构方面仍存在明显不足,包括缺乏有效治理流程、数据质量监控不足,以及数据标准化和转换灵活性不足等问题。评估报告提出了针对性改进建议,包括完善数据战略、建立治理流程、加强质量监控和提升数据转换灵活性等,为提升数据管理成熟度提供了重要指导。

cdfunlove的博客 166

antd上传文件到服务器,Antd 4 Upload 图片上传(前端篇)

Antd 4 Upload 图片上传(前端篇)简介记录一下第一次使用 Ant Design 的 Upload 组件上传图片到后端服务器的基本流程和思路。前端使用了 React + Antd ,后端使用 Nodejs 的Express 。主要介绍 Antd 中 Upload 组件的照片墙,也就是上传多张图片。Ant Design 官方 Upload 教程地址:Antd Upload 组件实现1. 简...

weixin_36074800的博客 5235

上位机图像处理和嵌入式模块部署(qmacvisual获取边界点)

【声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在图像处理中,解决了分割的问题之后,下面就是属性信息的提取。在这其中,有一种属性是非常重要的 ,那就是外界轮廓的边界点获取。这个边界点,可以用来计算长度,也可以用来进行直线、圆的拟合,具体的用途取决于现场的实际使用场景。目前qmacvisual支持对边界点的提取,相关控件可以直接用来提取边界点。

嵌入式-老费,一个分享专业嵌入式知识的blog 882

react中,antd组件中的upload实现,文件的上传,文件的下载,导出,批量导出(直接调接口),上传额外的参数(data)

react中,antd组件中的upload实现,文件的上传,文件的下载,导出,批量导出(直接调接口),上传额外的参数(data)

夜空孤狼啸的博客 8238

把 ABAP ALV 做成可点、可改、可保存:Interactive Editable ALV Grid 的一套落地打法

文章摘要(148字): SAP ALV报表开发中,交互式可编辑网格的实用方案需解决三个核心问题:数据展示、交互下钻与编辑保存。本文以SCARR航空公司和SFLIGHT航班数据为例,演示如何实现双击主列表下钻明细、动态切换编辑模式、精确保存修改的技术路线。关键点包括:通过PF-STATUS添加业务按钮、使用CHECK_CHANGED_DATA同步前端修改、保护关键字段避免误操作,以及变更数据的审计跟踪方法。该方案适用于SAP GUI环境下的快速业务调整需求,相比Fiori开发具有更高的实施效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 228

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

antd的upload组件的各种上传、下载操作(vue)

antd(vue)的upload组件 文件上传下载的相关操作

zero00122的博客 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Antd的Upload上传组件的使用方式

【代码】Antd的Upload上传组件的使用方式。

m0_47014098的博客 2444

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Ant Design Vue V3 Modal 对话框

模态对话框。 何时使用# 需要用户处理事务,又不希望跳转页面以致打断工作流程时,可以使用Modal在当前页面正中打开一个浮层,承载相应的操作。 另外当需要一个简洁的确认框询问用户时,可以使用Modal.confirm()等语法糖方法。 API# # 参数 说明 类型 默认值 版本 afterClose Modal 完全关闭后的回调 function 无 bodyStyle Modal body 样式 object ...

m0_65137738的博客 7083

antd Upload 文件上传

1.antd官网Upload组件: https://ant.design/components/upload-cn/ 2.下图是最近开发的上传文档的效果: 3.文件上传的实现: (1)方法一:antd默认上传。 a:渲染文件上传组件。getPDFURL()方法为实现文件的上传。showUploadList为是否展示 uploadList, true显示,false不显示,其可设为一...

飞翔的熊blabla 6681

react使用antd实现手动上传文件(提交表单)

前言:最近在做一个后台管理项目涉及到上传文件,使用antd里的Upload实现上传文件。记录一下遇到的问题和坑。 1.要实现的效果 我要实现的效果就是点击上传文件,选择完文件后点击ok(也就是提交表单后在上传)其实就是手动上传文件。下面我来介绍一下我的做法和我遇到的一些坑。 2.实现步骤 1.引入所需antd的部件 import { Table, Button, Modal, Fo...

从事前端,不断积累经验,学习新的技术。头像不是本人是莉莉崽(美貌、可爱集于一身的小姐姐,小仙女),一个宝藏博主,值得喜欢! 1万+

antd Upload 自定义上传

需求 由于使用antd 上传图片,在某些情况下,例如token 失效,导致上传图片错误,但是antd 组件始终会走onChange 事件 导致上传路径为空情况 解决办法 使用自定义上传 // 自定义上传图片 const customRequest = params => { const { file, onSuccess, onError } = params; const formData = new FormData(); formData

waillyer的博客 5442

antd的upload组件,阻止默认上传事件(原上传默认会请求一个url,就算什么都不写也会请求)

antd的upload组件,阻止默认上传事件(原上传默认会请求一个url,就算什么都不写也会请求)

从事前端,不断积累经验,学习新的技术。头像不是本人是莉莉崽(美貌、可爱集于一身的小姐姐,小仙女),一个宝藏博主,值得喜欢! 5744

antd-upload文件上传 && 模版字符串html渲染

antd upload

congxue666的博客 1074

Antd的Upload组件上传文件控制文件数量、格式等,以及提交时如何获取文件

背景:使用React的antd组件的Upload(官网),要求文件上传后,在点击提交时再将文件传过去。 技术点:完全控制的文件上传。可控制上传数量。控制文件格式。移除时的事件onRemove。状态、数量改变onChange事件等。是否带cookie,withCredentials: true。提交时,originFileObj属性获取原始文件。

清颖的博客 9680

antd upload实例和一些解决问题的办法

1、实现beforeUpload虽然返回false,但是仍然出现省略图 handleBeforeUpload = (file) => { let files = []; files = this.state.files; const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = (e) => { file.thumbUrl = e.targe

前端小白成长记 7202

react文件上传组件----UploadFile

【代码】react文件上传组件----UploadFile。

weixin_45180016的博客 1459
上一篇: mac如何卸载从官网安装的node
下一篇: React js 点击输入框其它位置隐藏下拉框
溯流2021
博客等级 码龄5年 8粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值