下载进度条弹出并结束,设备中没有错误且没有输出文件

时间:2018-09-05 15:10:41

标签: javascript angularjs ionic-framework cordova-plugins ionic-v1

我正在使用Rest API为我的APP创建一个图像下载服务器,HTML中有两个按钮,一个是下载按钮,另一个是加载按钮。 单击下载按钮时,进度条会显示进度,但没有输出文件,即使加载按钮未加载任何内容也不会显示任何错误。

通过在脚本中进行某些更改,此脚本可以与静态URL(无API)配合使用。

我的临时服务器的链接。 http://freaksearch.com/aarti/rest-api.php?json=image&Id=

此脚本所需的插件:cordova-plugin-file-transfer (这不是折旧的插件) 插件链接:https://www.npmjs.com/package/cordova-plugin-file-transfer

这是我的HTML:

<div class="padding">
    <button class="button" ng-click="download()">Download</button>
    <button class="button" ng-click="load()">Load</button>
    {{imgFile}}
    <img ng-src="{{imgFile}}">
</div>

这是我的剧本:

$scope.download = function(imageId, imageName) {
    $ionicLoading.show({
      template: 'Downloading...'
    });
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {
          fs.root.getDirectory(
              "MyProject",
              {
                create: true
              },
              function (dirEntry) {
                dirEntry.getFile(
                    imageName + ".jpg",
                    {
                      create: true,
                      exclusive: false
                    },
                    function gotFileEntry(fe) {
                      var p = fe.toURL();
                      fe.remove();
                      ft = new FileTransfer();
                      ft.download(
                          encodeURI('http://freaksearch.com/aarti/rest-api?json=image' + imageId),
                          p,
                          function (entry) {
                            $ionicLoading.hide();
                            $scope.imgFile = entry.toURL();
                          },
                          function (error) {
                            $ionicLoading.hide();
                            alert("Download Error Source --> " + error.source);
                          },
                          false,
                          null
                      );
                    },
                    function () {
                      $ionicLoading.hide();
                      console.log("Get the file failed");
                    }
                );
              }
          );
        },
        function () {
          $ionicLoading.hide();
          console.log("Request for filesystem failed");
        });
  }
  $scope.load = function() {
    $ionicLoading.show({
      template: 'Loading...'
    });
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) {
        fs.root.getDirectory(
            "MyProject",
            {
                create: false
            },
            function(dirEntry) {
                dirEntry.getFile(
                    imageName + ".jpg",
                    {
                        create: false,
                        exclusive: false
                    },
                    function gotFileEntry(fe) {
                        $ionicLoading.hide();
                        $scope.imgFile = fe.toURL();
                    },
                    function(error) {
                        $ionicLoading.hide();
                        console.log("Error getting file");
                    }
                );
            }
        );
    },
    function() {
        $ionicLoading.hide();
        console.log("Error requesting filesystem");
    });
}

1 个答案:

答案 0 :(得分:0)

在config.xml中添加<preference name="AndroidPersistentFileLocation" value="Compatibility" />使我的文件夹和文件可见。我希望这可以帮助某人。

现在我可以看到图像了,但是所有图像都已损坏