Ionic之路

ionic 通过url下载文件到本地

2017-02-21  本文已影响3865人  LuckTime

方法多种多样。

  1. [使用 文件管理插件] (http://www.ionic.wang/ng_cordova-file.html)
    cordova plugin add cordova-plugin-file
    2.controller.js 添加方法。
//2 new 接单后,点击某订单,显示订单的情况
.controller('DownCtrl',  function($scope,$timeout,$cordovaFileTransfer){
      $scope.downloadFile = function(pathurl) {
              var url = pathurl;
              var filename = url.split("/").pop();
              alert(filename);
              var targetPath = cordova.file.externalRootDirectory + filename;
              var trustHosts = true
              var options = {};
              // alert(cordova.file.externalRootDirectory);
              $cordovaFileTransfer.download(url, targetPath, options, trustHosts)
                  .then(function(result) {
                      // Success!
                      alert(JSON.stringify(result));
                  }, function(error) {
                      // Error
                      alert(JSON.stringify(error));
                  }, function (progress) {
                      $timeout(function () {
                          $scope.downloadProgress = (progress.loaded / progress.total) * 100;
                      })
                  });
          }
}

3.view.js 执行方法

    <ion-item>
     <button class="button button-block button-calm" ng-click="downloadFile()"> 下载图片 </button>
    </ion-item>

注意事项:

目录对应的android 真实目录。
console.log(cordova.file.externalApplicationStorageDirectory); //file:///storage/emulated/0/Android/data/com.bntake.driver.in/
console.log(cordova.file.dataDirectory); //file:///data/user/0/com.bntake.driver.in/files/
console.log(cordova.file.externalDataDirectory); //file:///storage/emulated/0/Android/data/com.bntake.driver.in/files/
console.log(cordova.file.externalRootDirectory);//file:///storage/emulated/0/
console.log(cordova.file.externalCacheDirectory); //file:///storage/emulated/0/Android/data/com.bntake.driver.in/cache/
console.log(cordova.file.applicationStorageDirectory); //file:///data/user/0/com.bntake.driver.in/
console.log(cordova.file.cacheDirectory); //file:///data/user/0/com.bntake.driver.in/cache/
console.log(cordova.file);  //object

cordova.file.externalRootDirectory EACCES (Permission denied)"无法打开文件夹的权限问题。

修改  应用的文件夹读取权限。  在设置 ->应用->
某应用->权限->存储空间。(安卓系统的类似的功能,因为手机系统都做了适配)

请求超时的处理,和文件管理

$timeout,$cordovaFileTransfer

js 在index.html 的引入。与该项目无关。只有引入js文件,才可以在controller中引入model方法。

  <script src="js/services.js"></script>
  <script src="js/service_image.js"></script>

第一次创建项目,index.html插件的引入: 需要安装

  <script src="lib/ngCordova/dist/ng-cordova.js"></script>
上一篇 下一篇

猜你喜欢

热点阅读