function arrayBufferToBase64(buffer, callback) { var blob = new Blob([buffer], { type: 'application/octet-binary' }) var reader = new FileReader() reader.onload = function (evt) { var dataurl = evt.target.result callback(dataurl.substr(dataurl.indexOf(',') + 1)) } reader.readAsDataURL(blob) } var pathInput = document.getElementById('path-to-read') addClickEnterHandler( document.getElementById('read'), pathInput, function () { var pathToRead = pathInput.value var isFile = pathToRead.match(/\S+\.\S+$/g) var promise = isFile ? window.tauri.readBinaryFile(pathToRead) : window.tauri.readDir(pathToRead) promise.then(function (response) { if (isFile) { if (pathToRead.includes('.png') || pathToRead.includes('.jpg')) { arrayBufferToBase64(new Uint8Array(response), function (base64) { var src = 'data:image/png;base64,' + base64 registerResponse('') }) } else { var value = String.fromCharCode.apply(null, response) registerResponse('') var fileInput = document.getElementById('file-response') fileInput.value = value document.getElementById('file-save').addEventListener('click', function () { window.tauri.writeFile({ file: pathToRead, contents: fileInput.value }).catch(registerResponse) }) } } else { registerResponse(response) } }).catch(registerResponse) } )