2016-03-17 103 views
0

我已經開發了AngularJS的SPA(單頁應用程序),我試圖用AngularJS強制下載pdf文件。是否有可能通過angularjs在瀏覽器中強制文件下載?

現在我只能在下一個代碼的新選項卡中打開de pdf文件。

HTML視圖:

<a ng-click="download()"></a> 

控制器:

$scope.download = function(){ 
    $window.open('/cv.pdf', '_blank'); 
}; 

有沒有辦法強迫在瀏覽器中的PDF下載?

你可以看到在下面的網址,這個例子:

www.juanmanuellopezpazos.es/curriculum(HTML視圖)

www.juanmanuellopezpazos.es/Curriculum.pdf(PDF文件,我想其下載force)

回答

0

我終於得到了解決與@kierandotcoanswer。最好的辦法是這樣的:

<a href="host/file.pdf" download target="_self"></a>

download HTML5屬性和target屬性與_self值做的伎倆。

0

上一個問題應該提供很多關於這方面的信息。 (HTML) Download a PDF file instead of opening them in browser when clicked

在你的情況下,我建議只是直接鏈接到PDF和使用下載屬性(http://www.w3schools.com/tags/att_a_download.asp)。

+0

非常感謝你,但我有一個小問題。如果我使用推薦的選項,AngularJS將路線作爲應用程序路線管理,而不是作爲資源。有什麼辦法可以避免這種情況? –

+0

再次嗨!我找到一個解決方案。如果您添加值「_self」的「目標」選項,PDF文件已正確下載。最終的解決方案是Download,其中主機可以是「本地主機」或任何其他。 –

+0

@JuanManuelLopezPazos超級高興你有工作:) – KieranDotCo

1

我在MVC.NET WITH ANGULAR JS中完成了這項工作。 它正常工作與Firefox也(在測試版:50.0) 寫下以下在功能代碼:

//in mvc view 
<a ng-href="#" title="{{attachments.FileName}} " ng-click="download(attachment.FilePath,attachment.FileName)">{{attachments.FileName}} </a> 
// in .js file 
$scope.download = function download(pathoffile, filename) { 
     $http.get(pathoffile, { 
      responseType: "arraybuffer" 
     }).then(function (response) { 
      $scope.filedata = response.data; 
      var headers = response.headers(); 
      headers['Content-Disposition'] = "attachment"; 
      var blob = new Blob([response.data], { type: "octet/stream" }); 
      var link = document.createElement('a'); 
      link.href = window.URL.createObjectURL(blob); 
      link.download = filename; 
      document.body.appendChild(link); 
      link.click(); 
      document.body.removeChild(link); 
     }); 

    } 
相關問題