Bug复盘: Antd Upload组件向当前页面发送xhr请求

问题情境

最近在使用 antd 的 Upload 组件时遇到这样一个问题: 在未设置属性action时,Upload组件总会向当前页面发送一个xhr请求

问题解决实现

搜索问题后发现有相似问题: 传送门

看到有这样一条评论:

因为当时刚入手项目, 也是 React 和 antd 的新手, 所以当时的解决方案是在 nginx 配置请求转发, 现在回过头来再处理下这个问题

配置action属性就要单独走请求和错误处理, 超时时间之类的 , 而customRequest官方文档上没有直接给demo,所以当时的处理是通过beforeUpload和onChange实现上传, 既没有配置action,也没有自定义customRequest

在beforeUpload中对上传文件合法情况校验, 在onChange中处理文件上传, 文件回显等,这样处理其实也还好, 但就是没有配置action会导致上传时总是向向当前页面发送一个 xhr请求,这个请求本地开发没什么问题, 当时部署到线上就会出现比较大的问题了:

  • 会带着 payload 向当前页面请求
  • 如果使用配置 nginx 转发的话, 因为上传文件一般比较大, 走 xhr 请求还带着比较大的 payload, 而数据较大的话一般 nginx 直接就拒掉了, 除非让nginx对请求数据相应也变大一些, 但这样就不太合理了

所以讲来讲去, 还是要回到customRequest上来

官方文档告诉我们这个属性是干嘛的

然后具体怎么使用让我们自己去另一个仓库看代码

然后看一下demo:

基本了解了, 就是一个回调函数, 所以直接加上这个属性, 回调入参onSuccess

这样改造的话 可以在不改变现有逻辑的情况下 解决这个xhr的问题

解决方案

关于不想使用action属性, 还不想出现这个问题的, 在调研中, 我想到了几个解决方案:

方案1: 如上, 正常使用beforeUpload,onChange, 就是需要再最后把customRequest绑定在Upload组件上

方案2: 在beforeUpload中, 条件照常判断, 不过最后都要return false,return false之后就会阻断发生xhr请求, 文件上传的实现可以在beforeUpload的条件判断中加一个变量结合onChange实现

方案3(推荐): 根据官方文档的demo: github.com/react-compo... 来自己实现

方案4: 全换成自己实现的上传组件

方案5: 魔改Upload组件, 引用魔改的组件

相关推荐
开开心心就好31 分钟前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
李纲明1 小时前
WordPress 白屏或提示「出现了严重错误」:先开 WP_DEBUG 抓致命错误,再二分插件与主题
运维·php·debug·wordpress·白屏·插件冲突·devdiy
PedroQue992 小时前
0.8.2 新增 backFallback 配置,无 tabbar 页返回无忧
前端·uni-app
淡漠的蓝精灵2 小时前
web.py:一个简单到极致的 Python Web 框架
开发语言·前端·python·其他
开开心心就好3 小时前
竖式除法出题工具,整除余数混合模式
运维·服务器·前端·javascript·ocr·perl·1024程序员节
起个名字费劲死了3 小时前
Halcon学习一:骰子识别
前端·python·学习
大江东去浪淘尽千古风流人物3 小时前
【HexVIO】DSP卸载双目惯性VIO:Hexagon向量化前端与单帧融合调度深度解析
前端·状态模式·slam·dsp·vio·hexagon·移动端加速
其实防守也摸鱼3 小时前
Chrome 扩展安全攻防实录:从攻击面到防御实践
开发语言·前端·网络·chrome·安全·web安全·php
web打印社区3 小时前
Lodop排障总纲-常见报错一张表
开发语言·前端·javascript·chrome·websocket
李剑一4 小时前
为什么几乎所有的知名开源项目都是外国人写的?
前端·ai编程·deepseek