react+antd upload实现图片宽高、视频宽高尺寸校验
图片宽高校验方法:
// 上传图片尺寸限制
const checkIconWH = (file: any) => {
return new Promise<void>(function (resolve, reject) {
const fileReader = new FileReader();
fileReader.onload = (e) => {
const image = new Image();
image.onload = function () {
if (image.width !== 512 && image.height !== 512) {
reject();
} else {
resolve();
}
};
image.onerror = reject;
image.src = e?.target?.result && isString(e?.target?.result) ? e?.target?.result : '';
};
fileReader.readAsDataURL(file);
});
};
视频宽高校验方法:
// 上传mp4尺寸限制
const checkVideoWH = (file: any, width: number, height: number) => {
return new Promise<void>(function (resolve, reject) {
const url = URL.createObjectURL(file);
const video = document.createElement('video');
video.onloadedmetadata = () => {
URL.revokeObjectURL(url);
console.log(video.videoWidth, video.videoHeight)
if (video.videoWidth < width || video.videoHeight < height) {
reject()
} else {
resolve()
}
}
video.src = url;
video.load();
});
};
校验使用(在上传之前的beforeUpload方法中使用):
/**
* 上传请求
* @param {object} file - 上传的文件
* @param {object} item - 上传的信息
* @param {string} type - 上传的类型
*/
const upLoad = async (file: RcFile, item: PropsConfig, type?: string) => {
let canContinue = true;
//如果是icon,检测尺寸
if (item.type === 'icon') {
await checkIconWH(file)
.then(() => {
canContinue = true;
})
.catch(() => {
canContinue = false;
message.error('ICON需为512X512px,PNG格式的图片,请确认后重新上传');
return;
});
}
//如果是mp4,检测尺寸
if (item.type === 'mp4' && fileWidth && fileHeight) {
await checkVideoWH(file, fileWidth, fileHeight)
.then(() => {
canContinue = true;
})
.catch(() => {
canContinue = false;
message.error(fileCheckMsg || '文件校验失败');
return;
});
}
//如果是mp4且需要检测大小(fileSize单位是MB)
if (item.type === 'mp4' && fileSize) {
console.log(file, fileSize)
if (file.size / 1024 / 1024 > fileSize) {
canContinue = false;
message.error(fileCheckMsg || '文件校验失败');
return;
}
canContinue = true;
}
if (!canContinue) return;
……………省略剩余代码……………
react+antd upload实现图片宽高、视频宽高尺寸校验的更多相关文章
- AntDesign VUE:上传组件图片/视频宽高、文件大小、image/video/pdf文件类型等限制(Promise、Boolean)
文件大小限制 - Promise checkFileSize(file, rules) { return new Promise((resolve, reject) => { file.size ...
- elementUI upload 对图片的宽高做校验
很开心今天中午没有吃饭!原因是一直没有解决掉一个小问题,于是一直试错,最后看了下源码才有了点头绪,历时四五个小时才解决掉,有点怀疑自己的能力了,所以写下此文,记录一下今天的囧况!一般情况下遇到问题,自 ...
- 封装react antd的upload上传组件
上传文件也是我们在实际开发中常遇到的功能,比如上传产品图片以供更好地宣传我们的产品,上传excel文档以便于更好地展示更多的产品信息,上传zip文件以便于更好地收集一些资料信息等等.至于为何要把上传组 ...
- React+Antd+Antd-Img-Crop实现上传固定大小的裁剪头像或者图片(且可控制图片数量)
见章知著 1024,程序员们节日快乐!本文主要讲述react配合antd以及react-img-crop第三方库实现一个可控的图片上传功能. 运行项目 需要具有node环境 第三方库安装 1.antd ...
- 从H264码流中获取视频宽高 (SPS帧) 升级篇
之前写过 <从H264码流中获取视频宽高 (SPS帧)> . 但发现很多局限性,而且有时解出来是错误的. 所以重新去研究了. 用了 官方提供的代码库来解析. 花了点时间,从代码库里单独把解 ...
- 从H264码流中获取视频宽高 (SPS帧)
获取.h264视频宽高的方法 花了2个通宵终于搞定.(后面附上完整代码) http://write.blog.csdn.net/postedit/7852406 图像的高和宽在H264的SPS帧中.在 ...
- 获取图片的大小(宽高):BytesIO
获取图片的大小(宽高) from io import BytesIO,StringIO import requests from PIL import Image img_url = "ht ...
- React antd如何实现<Upload>组件上传附件再次上传已清除附件缓存问题。
最近在公司做React+antd的项目,遇到一个上传组件的问题,即上传附件成功后,文件展示处仍然还有之前上传附件的缓存信息,需要解决的问题是,要把上一次上传的附件缓存在上传成功或者取消后,可以进行清除 ...
- 27.openpyxl 向指定单元格添加图片并修改图片大小 以及修改单元格行高列宽
openpyxl 向指定单元格添加图片并修改图片大小 以及修改单元格行高列宽 from openpyxl import Workbook,load_workbook from openpyxl.dra ...
- Matlab从一系列图片导出AVI视频,导出GIF动图
平台:Win7,Matlab 2014a 从一系列图片导出AVI视频的M代码如下: clear all; % 清除变量 % 官方示例,命令窗口输入“doc VideoWriter” writerObj ...
随机推荐
- OnMicro BLE应用方案|蓝牙语音遥控器-OM6621E
随着物联网技术不断发展,家用电器往智能化方向持续迭代,使用红外遥控器这种传统的互动方式已经满足不了实际的使用需求,蓝牙语音遥控器作为人机交互新载体,逐渐取代传统红外遥控器成为家居设备的标配. 相比于传 ...
- SQL_TIP_JOIN_x
没有条件的JOIN会导致数据数量变为两表的数据量的乘积结果. 用ON来在这些结果里进行筛选 on T1.A = T2.A的时候,如果T1的A是不重复的,则实际上是在对T2现有数据做筛选,结果数据量&l ...
- MQTT 发布/订阅模式介绍
MQTT 发布/订阅模式 发布订阅模式(Publish-Subscribe Pattern)是一种消息传递模式,它将发送消息的客户端(发布者)与接收消息的客户端(订阅者)解耦,使得两者不需要建立直接的 ...
- VsCode C++ 语法检测失效不标红色波浪线 解决办法
如果enable Squiggles 无效,按照下图里配置设置解决问题. 如图:
- Linux: Ensure X Window System is not installed
参考 2.2.2 Ensure X Window System is not installed X window System是什么 The X Window System provides a G ...
- Nginx负载均衡4种方案
1.轮询 轮询即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器. 配置的例子如下:http{ upstream sampleapp { ...
- redis geo 做距离计算排序分页
redis geo 做距离计算排序分页 // 添加经纬度和店铺id geoadd store_list lng lat store_id 计算距离排序和生成临时文件 georadius store_l ...
- 吴恩达老师机器学习课程chapter01——序言+回归
吴恩达老师机器学习课程01--序言+线性回归 本文是非计算机专业新手的自学笔记,欢迎指正与其他任何合理交流. 本文仅作速查备忘之用,对应吴恩达(AndrewNg)老师的机器学期课程第一章.第二章.第四 ...
- docker删除image
删除<None><None>镜像 docker rmi $(docker images -f "dangling=true" -q) 如果删除时出现了ima ...
- Java lombok包中的常用注解,便捷化开发POJO类
lombok包中的一些常用注解 如何使用Lombok?Lombok提供注解方式来提高代码的简洁性,常用注解有: @Data @Setter @Getter @NonNull @ ...