typescript打开和下载文件

此博客围绕TypeScript展开,主要聚焦于使用TypeScript进行文件的打开和处理操作,在信息技术领域,TypeScript在文件操作方面有其独特优势和应用场景。
    // 读取多个文件示例
    public static async getAssetsFromLocal(accept:string = "*", bMul = false, func:any=null): Promise<string> {
        let document = Laya.Browser.document;
        let uploader = document.createElement('input');
        uploader.type = 'file';
        uploader.accept = accept;
        if(bMul){
            uploader.multiple = "multiple";
        }

        // 通过实际body的鼠标点击,突破chrome的模拟click事件安全限制
        let uploadClicker = ()=>{
            document.body.removeEventListener("click", uploadClicker);
            uploader.click();
        }
        document.body.addEventListener("click", uploadClicker);

        let retPromise = new Promise<string>(r => {
            uploader.onchange = function(){
                let imgs = new Map();
                let conf;
                for(let i = 0; i < uploader.files.length; i++){
                    let reader = new FileReader();
                    let fileinfo = uploader.files[i];
                    let tName = fileinfo.name.split(".");
                    let bImg = true;
                    if(tName[tName.length - 1] == "json"){
                        reader.readAsText(fileinfo);
                        bImg = false;
                    }
                    else if(tName[tName.length - 1] == "png" || tName[tName.length - 1] == "jpg"){
                        reader.readAsDataURL(fileinfo);
                    }
                    
                    reader.onload = function (e) {
                        console.log("reading file", fileinfo, reader.result);
                        if(bImg){
                            imgs.set(fileinfo.name, reader.result);
                        }
                        else{
                            conf = reader.result;
                        }
                        if(conf && (imgs.size + 1) == uploader.files.length && func){
                            func(conf, imgs);

                            r("");
                        }
                    };
                    reader.onerror = function (e) {
                        console.log("uploader readfile error", e);
                    };
                    reader.onabort = function (e) {
                        console.log("uploader readfile abort", e);
                    };
                }
            };
        });

        return retPromise;
    }

    // 下载文件示例
    public static saveToLocalFile(fName: string, content){
        let document = Laya.Browser.document;
        let dnEle = document.createElement('a');
        dnEle.setAttribute("href", "data:text/plain;charset=utf-8," + content);
        dnEle.setAttribute("download", fName);
        dnEle.style.display = "none";
        document.body.appendChild(dnEle);
        dnEle.click();
        document.body.removeChild(dnEle);                
    }

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值