217 lines
5.2 KiB
JavaScript
217 lines
5.2 KiB
JavaScript
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 ''
|
|
}
|
|
}
|