/** * 生成fileKey * * @param fileName 文件名 * @returns {*} */ export function getFileKey (fileName) { const extension = fileName.split('.').pop().toLowerCase(); const fileTypes = { image: { name: '图片', exts: ["jpg", "png", "jpeg", "gif", "bmp", "webp", "tiff", "svg", "ico", "psd", "raw"] }, video: { name: '视频', exts: ["mp4", "avi", "rmvb", "mov", "wmv", "flv", "mkv", "mpeg", "mpg", "m4v", "3gp", "webm", "vob", "swf"] }, radio: { name: '音频', exts: ["mp3", "wma", "wav", "mpeg-4", "cd", "m4a", "aac", "flac", "ogg", "aiff", "ape", "midi", "amr", "ra"] }, text: { name: '文本', exts: ["txt", "xls", "xlsx", "doc", "docx", "pdf", "ppt", "pptx", "csv", "rtf", "odt", "ods", "odp", "epub", "mobi", "pages", "numbers", "key"] }, zip: { name: '压缩文件', exts: ["zip", "rar", "7z", "tar", "gz", "bz2", "xz", "iso", "dmg", "pkg", "cab", "z", "lz", "lzma", "lzo"] } }; // 获取当前时间并格式化为 yyyyMMddHHmmss const now = new Date(); const yyyyMMddHHmmss = [ now.getFullYear(), String(now.getMonth() + 1).padStart(2, '0'), String(now.getDate()).padStart(2, '0'), String(now.getHours()).padStart(2, '0'), String(now.getMinutes()).padStart(2, '0'), String(now.getSeconds()).padStart(2, '0') ].join(''); // 生成5位随机数字 const random5Digits = Math.floor(10000 + Math.random() * 90000); // 查找匹配的文件类型 for (const [type, data] of Object.entries(fileTypes)) { if (data.exts.includes(extension)) { return `${type}/${yyyyMMddHHmmss}${random5Digits}` + '.' + extension; } } return ''; }