fs.js 1.9 KB

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