export { xFileSListType } from "../interface" export type fileListType = any; type xFileSNameTYpe = { name:string, type:string, uri:string, id:string, file:any, size:number, status:number } // type callReadBackFun = (byte:ByteArray)=>void /** * 由于安卓隐私的问题。实际得到的所有文件 其实 都不是真实地址。因此你想要得到真实的地址,你就得复制到你的应用沙盒中。 */ export class xFileSystem { mimeTypeFilter = [] as string[]; filelist = [] as xFileSNameTYpe[] inputDom:null|HTMLInputElement = null; multiple:boolean = true; maxFileSize:number = 30*1024*1024 constructor(typeFilter:string|null,tempmultiple:boolean|null,maxSize:number|null){ if(typeFilter!=null){ let filter : string[] = [] as string[]; let tms = typeFilter! as string[] for (let i = 0; i < tms.length; i++) { filter.push("."+tms[i]) } if(filter.length==0){ filter.push("*/*") } this.mimeTypeFilter = filter } if(tempmultiple!=null){ this.multiple = tempmultiple! } if(maxSize!=null){ this.maxFileSize = maxSize! } } isInfilelist(file:xFileSNameTYpe):boolean{ return this.filelist.some((el):boolean=>{ return el.name==file.name&&el.type==file.type }) } destory(){ } openDocument(call:(list:xFileSListType[])=>void){ let _this = this; let filetype = this.mimeTypeFilter[0].split('/')[0] if(filetype=='*'){ filetype = 'all' } wx.chooseMessageFile({ count:100, type:filetype, success(result) { let filelist = result.tempFiles for(let i=0;i_this.maxFileSize?4:0, } as xFileSNameTYpe if(!_this.isInfilelist(fileitem)){ _this.filelist.push(fileitem) } } call(_this.filelist.map((el)=>{ return { name:el.name, type:el.type, id:el.id, request:null, realFilePath:el.file.path, cacheFilePath:el.file.path, size:el.size, status:el.status } })) }, fail(er) { console.error(er) } }) } /** * 删除一个文件条目 * @param {string} id - 文件id * @returns {fileListType[]} 最新的文件列表 */ remove(id:string):xFileSListType[]{ return this.filelist.filter(el=>el.id!=id) } /** * 返回一个空文件列表数组 */ clear():xFileSListType[]{ this.filelist = [] as xFileSNameTYpe[]; return [] as xFileSListType[] } copyFileToPath(item:xFileSListType,path:string):Promise{ return Promise.resolve(item) } }