export default { /** * Downloads file * @param {*} filename * @param {*} data */ download(filename, data) { var element = document.createElement("a"); element.setAttribute("href", "data:text/plain;charset=utf-8," + encodeURIComponent(data)); element.setAttribute("download", filename); element.style.display = "none"; document.body.appendChild(element); element.click(); document.body.removeChild(element); }, /** * Convert data of file selected in input to base64 string * @param {*} input */ async toBase64(input) { return new Promise((resolve) => { if (input.files.length == 0){ resolve(null) } else if (input.files.length == 1){ this.fileToBase64(input.files[0]).then(resolve) } else Promise.all(Array(...input.files).map(this.fileToBase64)).then(resolve) } ); }, /** * Convert data of file selected in input to base64 string * @param {*} input */ async fileToBase64(file) { return new Promise((resolve, reject) => { var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function () { resolve(reader.result) }; reader.onerror = function (error) { reject(error) }; }); }, /** * Read data of file/files selected in input as string * @param {*} input */ async read(input) { return new Promise((resolve) => { if (input.files.length == 0){ resolve(null) } else if (input.files.length == 1){ this.readFile(input.files[0]).then(resolve) } else Promise.all(Array(...input.files).map(this.readFile)).then(resolve) } ); }, /** * Read data of file/files selected in input as string * @param {*} input */ async readFile(file) { return new Promise((resolve, reject) => { var reader = new FileReader(); reader.readAsText(file); reader.onload = function () { resolve(reader.result) }; reader.onerror = function (error) { reject(error) }; }); }, };