cocos && ts web导入与导出

导入

// 读取文件方式

export enum READ_FILE_TYPE {

    DATA_URL,// readAsDataURL, base64

    TEXT,// readAsText

    BINARY,// readAsBinaryString

    ARRAYBUFFER,// readAsArrayBuffer

}

   /**

     * 使用input调起文件选择窗口

     * @param accept (调用图片可用),json文件传null

     * @param callback 成功回调

     */

    openLocalFile(accept: string, callback: (file: File) => void) {

        let inputEl: HTMLInputElement = <HTMLInputElement>document.getElementById('file_input');

        if (!inputEl) {

            // console.log('xxxxxx createElement input');

            inputEl = document.createElement('input');

            inputEl.id = 'file_input';

            inputEl.setAttribute('id', 'file_input');

            inputEl.setAttribute('type', 'file');

            inputEl.setAttribute('class', 'fileToUpload');

            inputEl.style.opacity = '0';

            inputEl.style.position = 'absolute';

            inputEl.setAttribute('left', '-999px');

            document.body.appendChild(inputEl);

        }

        accept = accept || ".*";

        inputEl.setAttribute('accept', accept);//设置 input 元素的 type 属性:

        // inputEl.addEventListener('change', (event) => {

        //     console.log('xxx onchange1', event, inputEl.value);

        // });

        inputEl.onchange = (event) => {

            // console.log('xxx onchange2', event, inputEl.files);

            let files = inputEl.files

            if (files && files.length > 0) {

                var file = files[0];

                if (callback) callback(file);

            }

        }

        inputEl.click();

    }

    /**

     * 读取本地文件数据

     * @param file 待解析文件

     * @param readType 文件解析出的数据类型

     * @param callback 解析完成回调

     */

    readLocalFile(file: File, readType: READ_FILE_TYPE, callback: (result: string | ArrayBuffer) => void) {

        var reader = new FileReader();

        reader.onload = function (event) {

            if (callback) {

                if (reader.readyState == FileReader.DONE) {

                    // console.log('xxx FileReader', event, reader.result);

                    callback(reader.result);

                } else {

                    callback(null);

                }

            }

        };

        switch (readType) {

            case READ_FILE_TYPE.DATA_URL:

                reader.readAsDataURL(file);

                break;

            case READ_FILE_TYPE.TEXT:

                reader.readAsText(file);   //作为字符串读出

                //reader.readAsText(file,'gb2312');   //默认是用utf-8格式输出的,想指定输出格式就再添加一个参数,像txt的ANSI格式只能用国标才能显示出来

                break;

            case READ_FILE_TYPE.BINARY:

                reader.readAsBinaryString(file);

                break;

            case READ_FILE_TYPE.ARRAYBUFFER:

                reader.readAsArrayBuffer(file);

                break;

        }

    }



导出(下载json)

/**

     * saveForBrowser 保存文件

     * @param textToWrite json

     * @param fileNameToSaveAs 导出文件名

     */

    saveForBrowser(textToWrite, fileNameToSaveAs) {

        if (cc.sys.isBrowser) {

            console.log('浏览器');

            let textFileAsBlob = new Blob([textToWrite], { type: 'application/json' });

            let downloadLink = document.createElement('a');

            downloadLink.download = fileNameToSaveAs;

            downloadLink.innerHTML = 'Download File';

            if (window.webkitURL != null) {

                downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);

            }

            else {

                // Firefox requires the link to be added to the DOM

                // before it can be clicked.

                downloadLink.href = window.URL.createObjectURL(textFileAsBlob);

                downloadLink.onclick = this.finishEditFun;

                downloadLink.style.display = 'none';

                document.body.appendChild(downloadLink);

            }

            downloadLink.click();

        } else {

            Tool.I.showTips('请使用浏览器下载文件', 1000);

        }

    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一丶前端文件上传方式 前端网页文件上传一般使用 来实现。 在 HTML 文档中: ` `标签每出现一次,一个...
    毒行影客阅读 7,181评论 0 13
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,805评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,854评论 0 11
  • 1.下载xlsx类库,npm installxlsx --save 2.html,使用input标签,可以自定义样...
    阿凯_8b27阅读 217评论 0 0
  • 文件上传在网页应用中应该是一个很常用的功能,但是我是第一次做,所以也是网上找资料了,看了如阮一峰老师的《文件上传的...
    jorgon阅读 1,495评论 0 0