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 ...
随机推荐
- iOS Programing
ARC 1. ARC - Automatic Reference Counting 办公室照明原理 2. 函数release立即释放,autorelease进入autoreleasepool里 3. ...
- Didn't find class "org.apache.http.ProtocolVersion
使用volley时报"Didn't find class "org.apache.http.ProtocolVersion" 今天在运行签名好的apk 在android9 ...
- Python扩展(pybind11混编)
背景介绍pybind11是一个基于C++11标准的模版库. 与Boost.Python类似, pybind11主要着眼于创建C++代码的Python封装, 并为其提供了一套轻量级的解决方案. 安装与代 ...
- jekins 入门
环境安装 gitlab 安装 使用 docker 安装 gitlab docker run -d --name gitlab --restart always --hostname gitlab.zd ...
- 基于Axi4_lite的UART串口Verilog代码实现
UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是设备间进行异步通信的关键模块.UART ...
- 【git】3.4 git分支-分支开发工作流
资料来源 (1) https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E5%BC%80%E5%8F%91% ...
- 高CPU Java应用分析
模拟CPU 40%左右 import java.util.concurrent.CountDownLatch; public class Main extends Thread { private C ...
- k8s volumes
NFS: apiVersion: v1 kind: Pod metadata: name: test-pd spec: containers: - image: registry.k8s.io/tes ...
- IIS添加MIME类型实现未知文件下载
application/octet-stream 无需重启
- centos6根分区扩容,非lvm
1.关闭虚拟机,删除里面的快照,将磁盘扩容 2.根分区为sda3,开机后输入fdisk /dev/sda,d,3删除sda3,然后n,p,3,w创建sda3,扇区的开始位置要一致 3.growpart ...