在Ionic和$ cordovaFileTransfer上下载/下载文件到安全服务器

时间:2016-06-26 13:52:11

标签: javascript cordova ionic-framework

我尝试使用Ionic和Cordova构建应用程序,其部分功能是从安全位置上传和下载文件,知道这样的命令在我放置凭据时使用curl工作以用户:传递方式,但在Cordova我使用 $ cordovaFileTransfer

所以我的问题是:如何知道上传和下载文件需要进行身份验证,我可以添加我的凭据。

这是我用过的代码:

document.addEventListener('deviceready', function() {

    var url = "https://serverlink/thing.txt";
    var targetPath = cordova.file.externalRootDirectory + "/cloud/thing.txt";
    var trustHosts = true;
    var options = {
        params: {
           // Do i put my credentials here ?? 
        }
    };
    console.log('before download');
    $cordovaFileTransfer.download(url, targetPath, options, trustHosts)
        .then(function(result) {
            // Success!
            console.log("done downloading the file");
        }, function(err) {
            // Error
            console.log('error yaw !!', err);
        }, function(progress) {
            $timeout(function() {
                $scope.downloadProgress = (progress.loaded / progress.total) * 100;
            });
        });

}, false);

所以,我测试了上面的代码,我将我的凭据放在选项对象中的params,但它不起作用。

1 个答案:

答案 0 :(得分:0)

我找到了答案,我的资源使用基本授权,所以为了发送我需要进行身份验证的任何请求,我通过执行以下操作来管理:

authReader = function(username, password) {
                var tok = username + ':' + password;
                var hash = btoa(tok);
                return "Basic " + hash;
};
var options = {
     headers : {
          'Authorization': authHeaderValue('user', 'pass')
     }
}
$cordovaFileTransfer.download(url, targetPath, options, trustHosts)
                .then(function(result) {
                    // Success!
                    console.log("done downloading the file");
                }, function(err) {
                    // Error
                    console.log('error yaw !!', err);
                }, function(progress) {
                    $timeout(function() {
                        $scope.downloadProgress = (progress.loaded / progress.total) * 100;
                    });
});

到目前为止,我使用基本授权设置了标头(在Base64中进行了哈希处理 并直接发送请求并从我的安全服务器上取回我的文件。

对于我的问题,这基本上是解决方案。