fs.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. function arrayBufferToBase64(buffer, callback) {
  2. var blob = new Blob([buffer], {
  3. type: 'application/octet-binary'
  4. })
  5. var reader = new FileReader()
  6. reader.onload = function (evt) {
  7. var dataurl = evt.target.result
  8. callback(dataurl.substr(dataurl.indexOf(',') + 1))
  9. }
  10. reader.readAsDataURL(blob)
  11. }
  12. var pathInput = document.getElementById('path-to-read')
  13. addClickEnterHandler(
  14. document.getElementById('read'),
  15. pathInput,
  16. function () {
  17. var pathToRead = pathInput.value
  18. var isFile = pathToRead.match(/\S+\.\S+$/g)
  19. var promise = isFile ? window.tauri.readBinaryFile(pathToRead) : window.tauri.readDir(pathToRead)
  20. promise.then(function (response) {
  21. if (isFile) {
  22. if (pathToRead.includes('.png') || pathToRead.includes('.jpg')) {
  23. arrayBufferToBase64(new Uint8Array(response), function (base64) {
  24. var src = 'data:image/png;base64,' + base64
  25. registerResponse('<img src="' + src + '"></img>')
  26. })
  27. } else {
  28. var value = String.fromCharCode.apply(null, response)
  29. registerResponse('<textarea id="file-response" style="height: 400px"></textarea><button id="file-save">Save</button>')
  30. var fileInput = document.getElementById('file-response')
  31. fileInput.value = value
  32. document.getElementById('file-save').addEventListener('click', function () {
  33. window.tauri.writeFile({
  34. file: pathToRead,
  35. contents: fileInput.value
  36. }).catch(registerResponse)
  37. })
  38. }
  39. } else {
  40. registerResponse(response)
  41. }
  42. }).catch(registerResponse)
  43. }
  44. )