我需要提供一个下载文件的链接,链接必须隐藏并且任何用户都可以访问,这是我的代码,没有任何错误,但我甚至无法打开下载对话框:
模板
<a ng-href="#" target="page" type="button" class="btn"
ng-click="download()">Download</a>
脚本文件
$scope.download = function(){
//here i need to know the code,can anybody explain me
}
答案 0 :(得分:11)
我必须实现这个功能。还必须确保它适用于所有主要支持的浏览器。 这是同样的解决方案!!!
快乐编码!!!
您的观看/ HTML
<a target="_self" class="ui right floated btn btn-warning" href ng-click="downloadInvoice()"> Download </a>
您的控制器
$scope.downloadInvoice = function () {
$http.post(url,requestData, {responseType:'arraybuffer',headers:header
})
.success(function (response) {
var file = new Blob([response], {type: 'application/pdf'});
var isChrome = !!window.chrome && !!window.chrome.webstore;
var isIE = /*@cc_on!@*/false || !!document.documentMode;
var isEdge = !isIE && !!window.StyleMedia;
if (isChrome){
var url = window.URL || window.webkitURL;
var downloadLink = angular.element('<a></a>');
downloadLink.attr('href',url.createObjectURL(file));
downloadLink.attr('target','_self');
downloadLink.attr('download', 'invoice.pdf');
downloadLink[0].click();
}
else if(isEdge || isIE){
window.navigator.msSaveOrOpenBlob(file,'invoice.pdf');
}
else {
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
}
})
};
答案 1 :(得分:4)
首先,你可以隐藏/不公开&#34;基于Web的技术(HTML / CSS / JavaScript)应用程序中的链接。下载由客户端处理,因此下载/链接URL必须是公共的。你可以尝试隐藏&#34;保护性对象,例如下载URL中的ID使用后端执行的编程语言,如&#34; PHP或node.js等&#34;。通过这种方式,您可以创建hash
网址,例如http://www.myside.com/download/359FTBW!S3T387IHS
,以隐藏网址中recordId
等参数。
通过了解这一点,您的解决方案非常简单。只需使用<a href="http://mydownloadurl" download>link text</a>
href
来强制浏览器下载ng-click
来源。这里不需要download
。遗憾的是,Safari浏览器不支持ng-href
属性。当浏览器处理下载本身时,这并不重要。根据用户系统OS配置,将在安装在该系统上的程序中下载或直接打开文件。例如,如果某些pdf查看器应用程序可用,则PDF文件将在PDF查看器中打开。
我写了一个HTML attribute download来处理AngularJS控制器$scope
中的var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.fileHref = 'http://www.analysis.im/uploads/seminar/pdf-sample.pdf';
});
。我希望这就是你所需要的。
您的控制器:
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>
document.write('<base href="' + document.location + '" />');
</script>
<link rel="stylesheet" href="style.css" />
<script data-require="angular.js@1.3.x" src="https://code.angularjs.org/1.3.14/angular.js" data-semver="1.3.14"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<a ng-href="fileHref" download="yourFilename">Download</a>
</body>
</html>
您的观点
{{1}}