背景:使用React的antd组件的Upload(官网),要求文件上传后,在点击提交时再将文件传过去。
技术点:

  1. 完全控制的文件上传。
  2. 可控制上传数量。
  3. 控制文件格式。
  4. 移除时的事件onRemove。
  5. 状态、数量改变onChange事件等。
  6. 是否带cookie,withCredentials: true。
  7. 提交时,originFileObj属性获取原始文件。

页面大致是这样:

Upload代码如下:

const [fileList, setFileList] = useState([]);
// upload属性
const uploadProps = {name: 'file',action: getFullUrl('/card/upload'),withCredentials: true, // 文件上传时带cookieonChange: handleChange,onRemove: handleReset, // 点击文件后的小垃圾桶图标,移除beforeUpload: (file) => {const { name } = file;// 校验是否是excel文件const isExcel = /(xls|xlsx)$/i.test(name);if (!isExcel) {message.error(I18n.get('batch.card.upload.excel'));}// 自定义属性file.isExcel = isExcel;return isExcel;},};
// return中渲染:
<Upload {...uploadProps} fileList={fileList}><Button><Icon type="upload" />点击上传</Button></Upload>

防止一次代码太长,分开写,处理函数可以根据具体需求定义。
上面代码中的具体函数:

 const handleChange = ({ file, fileList }) => {try {const { status, response } = file;// 刚才的子定义属性,是否是Excel文件,通过校验if (!file.isExcel) {return;}// 只能上传一个文件,不能用flie直接设置,onRemove函数会触发handleChangesetFileList(fileList.slice(-1));if (status === 'error') {throw new Error('上传失败');}if (status === 'done' && response) {const { code } = response;// ...}} catch (e) {message.error(e.message);}};// 这里是只有一个文件,移除即清空文件列表const handleReset = () => {setFileList([]);};// 点击提交,formData的形式传参const handleSubmit = async () => {try {const formData = new FormData();formData.append('file', fileList[0].originFileObj);const res = await submitBatchFile(formData);const { code } = res;if (code !== '000000') {throw new Error('提交失败');}message.success('提交成功');} catch (e) {console.error(e);message.error(e.message);}};

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

  1. antd vue upload组件上传视频并实现视频预览

    antd vue upload组件上传视频并实现视频预览 html代码 <form><a-form-itemlabel="商品视频":labelCol=" ...

  2. antd Upload组件上传状态一直处于uploading

    antd Upload组件上传状态一直处于uploading 对于受控模式,需要在 onChange 中始终 setState fileList,保证所有状态同步到 Upload 内 import { ...

  3. element-ui upload组件 上传文件类型限制

    element-ui upload组件 上传文件类型限制 <el-uploadclass="c-upload"ref="upload":action=&q ...

  4. ant design Upload组件上传文件类型

    Upload组件上传文件类型设置 1.设置上传文件类型为excel <template><a-uploadname="file":multiple="t ...

  5. vue前端直接使用element-ui的upload组件上传到阿里云OSS存储

    因为公司的服务器比较拉吧,所以老大决定将数据文件等上传到阿里云服务器,通过ali-oss方式,这样的话读取文件也比较快  (能看到这说明什么安装element-ui都会了,我就不详细介绍了,直接跳过) ...

  6. 使用elementui实现表单上传功能_使用ElementUI中的upload组件上传Excel文件

    最初使用该组件实现图片上传是没有问题的,前后端配合,最终实现想要的效果,组件使用过代码如下: 将文件拖到此处,或点击上传 现在改为使用该组件实现Excel文件上传,组件的使用几乎是不变的,代码如下: ...

  7. element vue 上传模板_Vue Element UI upload 组件上传文件之后 file list 依旧是空数组

    在 element ui 的 GitHub issue 中搜索了一下,发现 upload 组件确实不支持自动更新 file list,需要手动在上传成功和删除的回调中处理文件列表同步... 这个体验太 ...

  8. Vue:使用elementUI upload组件上传excel文件

    <template><div><el-upload dragaction="" :http-request="upload" :b ...

  9. 使用element-ui的upload组件上传代码包时遇到的问题及总结

    1.在工作中使用element-ui的upload组件时,遇到一个问题就是这个upload会自动发送一个http请求,即使你使用了http-request自定义上传覆盖默认上传函数,也会导致在控制台里 ...

最新文章

  1. LeetCode 230. Kth Smallest Element in a BST--C++,Python解法--面试真题--找二叉树中第K小的元素
  2. Oracle 内存性能指标
  3. 百练-16年9月推免-B题-字符串判等
  4. 震惊了!原来这才是 Kafka!(多图+深入)
  5. python库(2)—— threading
  6. python嵌入到qt_在Qt图形用户界面中嵌入绘图
  7. 奇门对接需求设计_从2020《奇门遁甲》看网络电影精品化的“正确打开方式”...
  8. 服务器java项目转移到另一个盘_将svn的项目从一台服务器转移到另外一台服务器...
  9. cvs 代码无法提交
  10. 暑假练习:uva12563(01背包问题)
  11. python 贴吧调度器_简单的Python调度器Schedule详解
  12. 为什么线程切换开销大
  13. Mac After Effects安装BodyMovin说明文档
  14. quartz定时任务集群版
  15. CSS选择器(id选择器,包含选择器,标签名选择器,类选择器,属性选择器,通配符选择器,伪类选择器,相邻选择器,选择器的优先级,子选择器)
  16. QT 软键盘实现
  17. K-means算法Matlab实现
  18. 《 Python List列表全实例详解系列(三)》——列表添加元素(4种方法)
  19. 销售人员开发大客户技巧 大客户销售怎样做好
  20. (二)地理信息中对地球的描述-地球的大地水准面、地球椭球体、大地基准面

热门文章

  1. android 命令编译java文件,在WIN10上使用cmd窗口命令编译Android OpenCV
  2. 偏态分布(Skewed distribution)
  3. 搜索引擎蜘蛛的基本原理
  4. 英语单词 One 个人 2. 出生和死亡
  5. 软件测试方法—动态测试
  6. CCS Uniflash烧写CC3200开发板的简易操作笔记
  7. 年薪30W起,如何4个月拿下AI算法工程师offer?
  8. JTextArea用法
  9. 2020西瓜直播弹幕协议版弹幕提取思路与实现py
  10. MySQL之建表时[Err] 1050 - Table ‘users‘ already exists异常解决方法