【问题标题】:Cordova file reader don't workCordova 文件阅读器不工作
【发布时间】:2016-08-20 19:25:16
【问题描述】:

我在 Cordova 中的文件插件有一个奇怪的问题。如果我将其作为 windows phone 8.1 应用程序运行,则以下代码可以正常工作。但是如果我将它作为 Windows Phone 通用应用程序运行它会失败

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
       function (fs) {
           fs.root.getFile("www/test.xml", null, function (fileEntry) {
               fileEntry.file(gotFile, fail);
           }, fail);
       }, fail);

调用后

function (fs) {
           fs.root.getFile("www/test.xml", null, function (fileEntry) {
               fileEntry.file(gotFile, fail);
           }, fail);

使用错误代码 1 调用错误回调函数。这意味着找不到文件。有谁知道问题出在哪里?如果是这样,我该如何解决。

我认为,我在错误的文件系统中。有谁知道我必须使用哪个?

我知道有一些类似的问题,但它们仅涉及 windows phone 8.1,而不涉及 windows phone 通用。 我在 Visual Studio 中使用了cordova。

【问题讨论】:

    标签: cordova windows-phone cordova-plugins visual-studio-cordova


    【解决方案1】:

    我也无法将其用作 windows phone 8.1 应用程序。

    我使用以下代码通过{create:true} 进行了尝试:

    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
        function (fs) {
           fs.root.getFile("test.xml", { create: true }, function (fileEntry) {
               fileEntry.file(gotFile, fail);
           }, fail);
    }, fail);
    

    我得到了fileEntry,如下所示:

    如您所见,新创建的文件的nativeURLms-appdata:///local//test.xml,这意味着它不是在应用程序目录下创建的,而是在C:\Users\<username>\AppData\Local\Packages\<application identity name>\LocalState下创建的,如下所示:

    我研究了文档,但没有找到检索应用程序目录文件的方法。 所以目前的解决方法是使用 windows API 来获取应用程序目录下的文件,如下所示:

    if (cordova.platformId == "windows")
    {
        var uri = new Windows.Foundation.Uri("ms-appx:///www/test.xml");
        Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri).then(function (fs) {
                    var abc = fs;//get the file here
                 },fail);
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多