基于antd二次封装上传组件

基于antd二次封装手动上传组件

背景

上传下载的场景中,需要封装一个易用的上传下载组件

要求:上传前校验文件类型(白名单),上传时显示上传进度,跟踪上传结果,上传成功则显示下载和删除icon;失败则文件标红,并且只能删除,无法提交最终上传结果。

由于接口问题,需要自定义自己的上传实现,无法使用Upload组件的默认上传行为。

部分代码实现

UploadCp.jsx

生命周期
componentDidMount (){
    this.props.wrappedComponentRef(this); // 绑定实例
}

其他主要代码

细节
  1. 如果”上传失败” ,onError函数需要传入一个Error对象,这样鼠标移上去显示的失败信息会是Error对象的message字段

error 默认显示接口失败返回报文

判定失败的时候,需要file的 status为 ‘error’,

上传前的校验函数封装

校验上传类型白名单
校验函数

删除功能部分

下载部分

下载函数封装:

下载接口封装:

使用封装的上传组件

结果与反思

本次组件封装满足了业务需求,但是还存在一些不足

  1. 下载的时候不会显示进度条(懒)
  2. 更新上传列表的文件标识集合的时候,触发过于频繁

对于上传的文件类型,到底是选用formData的格式还是arrayBuffer的形式,还是不太能理解,需要加强学习。

如果使用fetch进行上传的话,fetch是不提供aip检测上传进度的。

原文链接:https://juejin.cn/post/7329350541136494646 作者:某哈压力大

(0)
上一篇 2024年1月30日 上午10:17
下一篇 2024年1月30日 上午10:27

相关推荐

发表回复

登录后才能评论