如何使用 angularjs 从 url 下载(保存)图像到我们的相册中?

Posted

技术标签:

【中文标题】如何使用 angularjs 从 url 下载(保存)图像到我们的相册中?【英文标题】:How to download(save) an image from url into our photo album using angularjs? 【发布时间】:2017-10-25 16:25:07 【问题描述】:

我是 angularjs 的新手,我的项目使用 angularjs 和 ionic 在 androidios 平台上运行。我需要使用图片网址将图片保存到手机相册(支持IOS 和Andorid)。我知道cordova插件可以从url下载图像,但我不明白如何安装cordova-plugin-file-transfer。有没有其他更简单的方法来实现这个功能?谢谢。

angular.module('myApp', []);

angular.module('myApp').controller('HomeCtrl', ['$scope', '$http', function($scope, $http) 

  $scope.saveImg = function(imgUrl)
   var hideSheet = $ionicActionSheet.show(
                        buttons: [
                            text: 'save image',
                            text: 'copy link',
                        ],
                        cancelText: 'cancel',
                        cancel: function () 
                        ,
                        buttonClicked: function (index) 
                            if (index == 0) //save image here
                               
                            
                        
                    );

  
 
]);
<img ng-src="imgUrl" on-hold="saveImg(imgUrl)">

【问题讨论】:

你必须需要使用cordova-plugin-file-transfer @jingyo 使用 vanilla cordova 框架的工作示例 - github.com/gandhirajan/Cordova_File_Operations 感谢您的帮助。但我的应用程序正在使用角度。我只是不明白如何将插件cordova-plugin-file-transfer 安装到cordova。 【参考方案1】:

首先您需要使用 CLI 安装插件:

cordova plugin add cordova-plugin-file-transfer

现在在模块中注入对ngCordova的依赖并

$cordovaFileTransfer 到您的控制器并添加以下代码:

var app= angular.module('myApp', ['ngCordova']);

    app.controller('HomeCtrl', ['$scope', '$http', '$cordovaFileTransfer',function($scope, $http,$cordovaFileTransfer) 

    var url = "http://cdn.wall-pix.net/albums/art-space/00030109.jpg"; // your url
        var targetPath = cordova.file.documentsDirectory + "testImage.png"; // filename
        var trustHosts = true;
        var options = ;
    $scope.trans=function()
        $cordovaFileTransfer.download(url, targetPath, options, trustHosts)
          .then(function(result) 
            // Success!
          , function(err) 
            // Error
          , function (progress) 

          );

       

    ]);

这是参考:http://ngcordova.com/docs/plugins/fileTransfer/

【讨论】:

但是有一个错误说:“无法读取未定义的属性'documentsDirectory'”。为什么?我已经安装了插件并注入了依赖 $cordovaFileTransfer。 尝试为文件提供一些其他目标路径

以上是关于如何使用 angularjs 从 url 下载(保存)图像到我们的相册中?的主要内容,如果未能解决你的问题,请参考以下文章

如何从angularjs中的url中删除'#'

如何使用 AngularJS 从外部 URL 获取 JSON 并在页面中显示 - 资源解释为脚本但使用 MIME 类型 text/html 传输

如何使用 angularjs 从物理路径下载 Excel 文件

如何从 URL、Spring Boot 和 AngularJs 应用程序中删除 #?

Angular js中的文件下载

使用 AngularJS 从 JSON 响应中获取图像 url