fileController.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /**
  2. * @description 获取文件目录 doc私有文档目录 www私有资源目录 public公有文档目录 dom公共下载目录
  3. * @param {string} type doc私有文档目录 www私有资源目录 public公有文档目录 dom公共下载目录
  4. */
  5. export function getFileIndex(type = 'doc') {
  6. let fileType = ''
  7. if (type == 'doc') {
  8. fileType = plus.io.PRIVATE_DOC;
  9. }
  10. if (type == 'www') {
  11. fileType = plus.io.PRIVATE_WWW;
  12. }
  13. if (type == 'public') {
  14. fileType = plus.io.PUBLIC_DOCUMENTS;
  15. }
  16. if (type == 'dom') {
  17. fileType = plus.io.PUBLIC_DOWNLOADS;
  18. }
  19. return new Promise((ok, err) => {
  20. plus.io.requestFileSystem(fileType, function(fs) {
  21. ok(fs)
  22. }, (e) => {
  23. err(e)
  24. });
  25. })
  26. }
  27. /**
  28. * @description = 创建或打开文件
  29. * @param {Object} fs //文件目录对象
  30. * @param {string} fileName //要创建打开的文件名称
  31. */
  32. export function getFile(fs, fileName) {
  33. return new Promise((ok, err) => {
  34. // fs.root是根目录操作对象DirectoryEntry
  35. fs.root.getFile(fileName, {
  36. create: true
  37. }, function(fileEntry) {
  38. console.log('文件获取成功');
  39. ok(fileEntry)
  40. }, (e) => {
  41. err(e)
  42. });
  43. })
  44. }
  45. /**
  46. * @description 写入文件内容
  47. * @param {Object} fileEntry //文件对象
  48. * @param {string} content //文件对象
  49. */
  50. export function writerTxt(fileEntry, content) {
  51. return new Promise((ok, err) => {
  52. // 创建文件写入对象
  53. fileEntry.createWriter((writer) => {
  54. writer.write(content)
  55. // 写入成功
  56. writer.onwrite((e) => {
  57. ok(e)
  58. })
  59. // 写入失败
  60. writer.onerror((e) => {
  61. err(e)
  62. })
  63. }, (e) => {
  64. err(e.message)
  65. })
  66. })
  67. }
  68. /**
  69. *獲取文件对象
  70. * @description 获取文件操作对象
  71. * @param {Object} fs //文件目录对象
  72. * @param {Object} fileName //要创建打开的文件名称
  73. */
  74. export function getFileText(fs, fileName) {
  75. return new Promise((ok, err) => {
  76. getFile(fs, fileName).then((fileEntry) => {
  77. fileEntry.file(function(file) {
  78. var fileReader = new plus.io.FileReader();
  79. fileReader.readAsText(file, 'utf-8');
  80. // 文件读取成功
  81. fileReader.onloadend = function(evt) {
  82. // 获取文件内容信息在evt.target.result
  83. ok(evt)
  84. };
  85. // 文件读取失败
  86. fileReader.onerror((e) => {
  87. err(e)
  88. })
  89. }, (e) => {
  90. err(e)
  91. });
  92. }).catch((e) => {
  93. err(e)
  94. })
  95. })
  96. }