123 lines
2.8 KiB
Plaintext
123 lines
2.8 KiB
Plaintext
|
|
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<filelist.length;i++){
|
|
let item = filelist[i];
|
|
let fileitem = {
|
|
name:item.name,
|
|
type:item.type.substring(item.type.lastIndexOf("/")+1),
|
|
uri:"",
|
|
id:Math.floor(Math.random() * 1 * Math.floor(Math.random() * Date.now())).toString().substring(0, 10),
|
|
file:item,
|
|
size:item.size,
|
|
status:item.size>_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<xFileSListType|null>{
|
|
return Promise.resolve(item)
|
|
}
|
|
|
|
} |