图片宽高校验方法:

  // 上传图片尺寸限制
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实现图片宽高、视频宽高尺寸校验的更多相关文章

  1. AntDesign VUE:上传组件图片/视频宽高、文件大小、image/video/pdf文件类型等限制(Promise、Boolean)

    文件大小限制 - Promise checkFileSize(file, rules) { return new Promise((resolve, reject) => { file.size ...

  2. elementUI upload 对图片的宽高做校验

    很开心今天中午没有吃饭!原因是一直没有解决掉一个小问题,于是一直试错,最后看了下源码才有了点头绪,历时四五个小时才解决掉,有点怀疑自己的能力了,所以写下此文,记录一下今天的囧况!一般情况下遇到问题,自 ...

  3. 封装react antd的upload上传组件

    上传文件也是我们在实际开发中常遇到的功能,比如上传产品图片以供更好地宣传我们的产品,上传excel文档以便于更好地展示更多的产品信息,上传zip文件以便于更好地收集一些资料信息等等.至于为何要把上传组 ...

  4. React+Antd+Antd-Img-Crop实现上传固定大小的裁剪头像或者图片(且可控制图片数量)

    见章知著 1024,程序员们节日快乐!本文主要讲述react配合antd以及react-img-crop第三方库实现一个可控的图片上传功能. 运行项目 需要具有node环境 第三方库安装 1.antd ...

  5. 从H264码流中获取视频宽高 (SPS帧) 升级篇

    之前写过 <从H264码流中获取视频宽高 (SPS帧)> . 但发现很多局限性,而且有时解出来是错误的. 所以重新去研究了. 用了 官方提供的代码库来解析. 花了点时间,从代码库里单独把解 ...

  6. 从H264码流中获取视频宽高 (SPS帧)

    获取.h264视频宽高的方法 花了2个通宵终于搞定.(后面附上完整代码) http://write.blog.csdn.net/postedit/7852406 图像的高和宽在H264的SPS帧中.在 ...

  7. 获取图片的大小(宽高):BytesIO

    获取图片的大小(宽高) from io import BytesIO,StringIO import requests from PIL import Image img_url = "ht ...

  8. React antd如何实现<Upload>组件上传附件再次上传已清除附件缓存问题。

    最近在公司做React+antd的项目,遇到一个上传组件的问题,即上传附件成功后,文件展示处仍然还有之前上传附件的缓存信息,需要解决的问题是,要把上一次上传的附件缓存在上传成功或者取消后,可以进行清除 ...

  9. 27.openpyxl 向指定单元格添加图片并修改图片大小 以及修改单元格行高列宽

    openpyxl 向指定单元格添加图片并修改图片大小 以及修改单元格行高列宽 from openpyxl import Workbook,load_workbook from openpyxl.dra ...

  10. Matlab从一系列图片导出AVI视频,导出GIF动图

    平台:Win7,Matlab 2014a 从一系列图片导出AVI视频的M代码如下: clear all; % 清除变量 % 官方示例,命令窗口输入“doc VideoWriter” writerObj ...

随机推荐

  1. MyBatis_07(动态SQL)

    动态SQL: Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能, 它存在的意义是:"为了解决拼接SQL语句字符串时的痛点问题". 一.If if标签可通 ...

  2. Google colab防断联

    (1)进入Colab的notebook界面,按快捷键F12,打开开发者模式或者右键检查进入,选择console (2)复制并运行代码 function ClickConnect(){ console. ...

  3. c++中内联函数和宏函数的区别

    一. 区别: 是不是函数: 宏定义不是函数,但是使用起来像函数.预处理器用复制宏代码的方式代替函数的调用,省去了函数压栈退栈过程,提高了效率: 内联函数本质上是一个函数,内联函数一般用于函数体的代码比 ...

  4. 内存参数kernel.shmmax和kernel.shmall的含义

    安装oracle数据库的时候,都要设置这个内核参数 vi /etc/sysctl.conf kernel.panic_on_oops = 1 1:程序出错,不继续运行 0:程序出错,继续运行 kern ...

  5. EBS的配置文件

    默认账套 select fnd_profile.value('GL_SET_OF_BKS_ID') FROM DUAL; >> 2026 这样就能通过2026去获取一些账套上的配置 比如c ...

  6. WPF绑定(4)

    什么是绑定(Binding)? 在winform中, 我们常常会用到各种类型的赋值, 例如: button1.Text="Hello"; label.Text="Hell ...

  7. Linux进程调度算法

    进程的状态 进程的基本状态 就绪:进程已获得除处理机以外的所需资源,等待分配处理机资源 执行:进程正在占用处理机资源执行 阻塞:进程等待某种条件,在条件满足之前无法执行.例如发起I/O系统调用,等待I ...

  8. [ARC140D] One to One

    个人思路: 一棵树也只有一个 \(a=-1\) 的点,所以可以把它看做一个点,但是要记录点的大小 \(sz_i\),即为这棵树的大小.如果本来就是一个点,那么大小为 \(1\). 状态:\(dp_{i ...

  9. ASPNET Core ActionFilterAttribute中断后续请求

    转载自:https://www.cnblogs.com/luconsole/p/4346669.html SPNET MVC如何正确的中断请求? 感觉是这样? 在aspnet开发过程中如果想要中断当前 ...

  10. mac系统yarn使用报错:ERROR: add is not COMMAND nor fully qualified CLASSNAME.

    出现错误的过程: mac 系统上使用阿里的X6(@antv/x6) x6 快速上手: 1   npm install @antv/x6 --save 2   yarn add @antv/x6     ...