最近有个需求,要求上传文件时获取音视频文件时长和文本文件字数🐶。
发现这样的冷门资料不多,特做个记录。本文忽略文件上传功能,只封装核心的工具函数,拿走即用
先看结果,很快获取到视频时长,其他的测试正常,放心食用😄
一、获取音视频文件时长
// 计算音频视频时长
export function getFileDuration(file: any) {return new Promise((resolve: any) => {let duration: number | string = 0;const url = URL.createObjectURL(file);const element = document.createElement(file.type.startsWith('video/') ? 'video' : 'audio');element.onloadedmetadata = () => {duration = element.duration;resolve(duration ? Math.ceil(duration) : 0);URL.revokeObjectURL(url); // 释放内存};element.onerror = (error) => {console.error('获取时长失败:', error);duration = 0;resolve(duration);};element.src = url;});
}
二、计算文本文件字数
// 计算文本文件字数
export function getTxtWords(file: any) {return new Promise((resolve: any) => {const reader = new FileReader();reader.onload = (event: any) => {const fileContent = event.target.result;const words = fileContent.trim(); // 去空格resolve(words.length);};reader.onerror = (error) => {console.error('Error reading file:', error);resolve(0);};reader.readAsText(file);});
}