// 媒体名称 export const mediaTypes = { "image": '图片', "video": "视频", "audio": "音频" } // 媒体扩展类型 export const mediaMimes = { "image": ["jpg", "png", "jpeg", "bmp", "gif"], "audio": ["mp3", "aac", "ogg", "wav" /* , "m4a" */], "video": ["mp4", "mov", "quicktime" /* ,"webm", "rmvb", "wmv" */] //ios:mov } // 媒体大小显示(MB) export const mediaMaxSize = { "image": 10, "video": 20, "audio": 5 } /** * 获取媒体扩展类型 * @param {Stirng} filename 文件名称 */ export const getMime = filename => { if (!filename || filename.indexOf('.') === -1) { return '' } return filename.split('.').pop().toLowerCase() } /** * 在路径中获取文件名 * @param {*} path */ export const getFilename = path => { const segment = (path || '').split('/') return segment[segment.length - 1] } /** * 检测媒体文件是否超过预设限制 * @param {String} type 媒体类型 * @param {Number} size 文件大小 */ export const checkSizeLimit = (type, size) => { size = size / 1024 / 1024 return size <= mediaMaxSize[type] } export const checkSizeLimitFree = (size, limit) => { size = size / 1024 / 1024 return size <= limit } /** * 检测媒体类型 * @param {String} type 媒体类型 * @param {String} filename 文件名称 */ export const checkMediaMime = (type, filename) => { const mime = getMime(filename) const find = mediaMimes[type] if (!find) { return false } return find.indexOf(mime) !== -1 } export const base64ToBlob = base64 => { let arr = base64.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } return new Blob([u8arr], { type: mime }); } export const base64ToDataURL = base64 => { return window.URL.createObjectURL(base64ToBlob(base64)); } export const blobToBase64 = function (blob) { return new Promise(resolve => { var reader = new FileReader(); reader.onload = function () { resolve(reader.result); }; reader.readAsDataURL(blob); }) }; /** * 获取图片文件尺寸 * @param {*} file */ export const getImgWH = (file) => { return new Promise((resolve) => { var reader = new FileReader() //读取图片文件 reader.readAsDataURL(file) reader.onload = function (e) { //初始化JavaScript图片对象 var image = new Image() //FileReader获得Base64字符串 image.src = e.target.result image.onload = function () { //获得图片高宽 var height = this.height var width = this.width resolve({ height, width }) } } }) } /** * 转化字节单位 * @param {*} file */ export const changeByteUnit = (x) => { const units = ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; let l = 0, n = parseInt(x, 10) || 0; while (n >= 1024 && ++l) { n = n / 1024; } return (n.toFixed(n < 10 && l > 0 ? 2 : 0) + units[l]); }