【问题标题】:How to convert FileEntry to standard JavaScript File object using chrome apps fileSystem如何使用 Chrome 应用程序文件系统将 FileEntry 转换为标准 JavaScript File 对象
【发布时间】:2017-12-16 14:21:10
【问题描述】:

是否可以将FileEntry 转换为标准JavaScript 对象File? 我在文档中找不到任何有意义的东西 https://developer.chrome.com/apps/fileSystem

【问题讨论】:

    标签: javascript filesystems google-chrome-app


    【解决方案1】:

    FileEntrydocumentation 确实在这里提供了指导:

    文件系统 API 的 FileSystemFileEntry 接口代表一个 文件系统中的文件。它提供了描述文件的属性 属性,以及创建 File 对象的 file() 方法 可用于读取文件。

    不幸的是,file()method 依赖于回调而不是 Promises,但我们可以将其包装起来,让 API 的使用(和代码阅读)更容易:

    async function getFile(fileEntry) {
      try {
        return await new Promise((resolve, reject) => fileEntry.file(resolve, reject));
      } catch (err) {
        console.log(err);
      }
    }
    
    var file = await getFile(fileEntry);
    

    请注意,FileSystemFileEntry 是非标准功能,不是标准轨道,因此 API 和浏览器支持可能会发生变化!

    【讨论】:

      【解决方案2】:

      我在谷歌示例https://github.com/GoogleChrome/chrome-app-samples/blob/master/samples/filesystem-access/js/app.js中找到了如何做到这一点

      var jsFileObject;
      fileEntry.file(function (file){ 
         jsFileObject = file 
      });
      

      【讨论】:

      • 不要忘记错误回调!在某些(尽管)极少数情况下,您将永远不会得到回调。签名应该是entry.file(success,error)
      • 注意这段代码是异步的:你不能立即使用jsFileObject。请参阅 xlm 的 answer,了解基于 Promise 的解决方案。
      猜你喜欢
      • 2015-03-01
      • 2013-08-05
      • 2015-10-28
      • 1970-01-01
      • 2016-04-25
      • 2014-12-19
      • 2020-09-22
      • 1970-01-01
      • 2016-11-25
      相关资源
      最近更新 更多