导入
// 读取文件方式
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);
}
}