1
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user