<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <input type="file" onchange="changeFile(event)" /> <script> async function changeFile(e) { console.log(e) let files = e.target.files console.log(files) console.log(await checkSize(files, 120), '校验胜利为true 失败为false、 120 示意120秒'); } let checkSize = async (files, size) => { // console.log(56, Number.isNaN(Number(size)), size) if (!files || !files[0]) return false // 这一条是正式服务器不须要这段所以当size 为undefined 时默认 返回 true if (Number.isNaN(Number(size))) return true const checktimevideo = document.getElementById('checktimevideo') if (checktimevideo) { document.body.removeChild(checktimevideo) } const video = document.createElement('video') const url = URL.createObjectURL(files[0]) video.src = url video.id = 'checktimevideo' video.style.display = 'none' document.body.appendChild(video) return await gettime(video, size) } let gettime = (video, size) => { const promise = new Promise(resolve => { video.addEventListener('canplaythrough', e => { console.log('就可视对讲', e, e.target.duration, size) if (e.target.duration <= size) { resolve(true) } else { resolve(false) } }) }) return promise } </script></body></html>