const iconConfig = [ { type: ['', undefined, null], mime: '', icon: '/devTools/page/static/fileSys/weizhiwenjian.png', }, { type: ['dwg'], mime: 'dwg', icon: '/devTools/page/static/fileSys/DWG.png', }, { type: ['xls', 'xlsx', 'csv'], mime: 'xls', icon: '/devTools/page/static/fileSys/excel.png', }, { type: ['exe'], mime: 'exe', icon: '/devTools/page/static/fileSys/EXE.png', }, { type: ['gif'], mime: 'gif', icon: '/devTools/page/static/fileSys/GIF.png', }, { type: ['html'], mime: 'html', icon: '/devTools/page/static/fileSys/HTML.png', }, { type: ['pdf'], mime: 'pdf', icon: '/devTools/page/static/fileSys/pdf.png', }, { type: ['ppt'], mime: 'ppt', icon: '/devTools/page/static/fileSys/pptl.png', }, { type: ['psd'], mime: 'psd', icon: '/devTools/page/static/fileSys/PSD.png', }, { type: ['rvt'], mime: 'rvt', icon: '/devTools/page/static/fileSys/RVT.png', }, { type: ['mp4', 'avi', 'wmv', 'mpg', 'mpeg', 'mov', 'flv', '3gp', 'mp3gp', 'mkv', 'rmvb'], mime: 'mp4', icon: '/devTools/page/static/fileSys/shipin.png', }, { type: ['skp'], mime: 'skp', icon: '/devTools/page/static/fileSys/SKP.png', }, { type: ['svg'], mime: 'svg', icon: '/devTools/page/static/fileSys/SVG.png', }, { type: ['png', 'jpeg', 'jpg', 'webp', 'bmp'], mime: 'img', icon: '/devTools/page/static/fileSys/tupian.png', }, { type: ['txt', 'sql', 'js', 'css', 'log', 'json'], mime: 'txt', icon: '/devTools/page/static/fileSys/txt.png', }, { type: ['word'], mime: 'word', icon: '/devTools/page/static/fileSys/word.png', }, { type: ['zip', 'rar', 'gz', '7z'], mime: 'zip', icon: '/devTools/page/static/fileSys/yasuo.png', }, { type: ['mp3', 'wma', 'wav', 'aac', 'flac'], mime: '', icon: '/devTools/page/static/fileSys/yinpin.png', }, ] export default { /** * 获取文件和目录列表 */ getDirFileList(path) { return new Promise((yes) => { // #ifdef APP-PLUS plus.io.resolveLocalFileSystemURL( path, function (entry) { if (entry.isDirectory) { let reader = entry.createReader() reader.readEntries( async (entries) => { let dirList = [] let fileList = [] for (let i = 0; i < entries.length; i++) { /** * @type {PlusIoDirectoryEntry} */ const item = entries[i] let meta = await getMetaData(item) let row = { type: item.isDirectory ? 'dir' : 'file', name: item.name, fileType: getFileType(item.name), ...meta, } if (item.isDirectory) { dirList.push(row) } else { fileList.push(row) } } dirList = dirList.sort((a, b) => a.time > b.time) fileList = fileList.sort((a, b) => a.time > b.time) yes([...dirList, ...fileList]) }, (e) => { console.log('readEntries error', e) uni.showToast({ title: '文件读取失败: ' + e.message, icon: 'none', }) yes([]) }, ) } else { uni.showToast({ title: '路径读取失败_b', icon: 'none', }) yes([]) } }, () => { uni.showToast({ title: '路径读取失败_a', icon: 'none', }) yes([]) }, ) // #endif }) }, /** * 获取文件图片 */ getFileIcon(type) { for (let i = 0; i < iconConfig.length; i++) { const item = iconConfig[i] for (let _i = 0; _i < item.type.length; _i++) { const typeName = item.type[_i] if (type == typeName) { return item.icon } } } return '/devTools/page/static/fileSys/weizhiwenjian.png' }, } /** * @param {PlusIoDirectoryEntry} entry */ function getMetaData(entry) { return new Promise((yes) => { entry.getMetadata( function (metadata) { yes({ size: metadata.size, time: metadata.modificationTime.getTime(), fileCount: metadata.fileCount, directoryCount: metadata.directoryCount, }) }, function () { yes({ size: 0, time: 0, fileCount: 0, directoryCount: 0, }) }, ) }) } function getFileType(name) { if (typeof name == 'string') { let tList = name.split('.') if (tList.length > 1) { return tList.pop().toLocaleLowerCase() } else { return '' } } else { return '' } }