角度触发器使用文件名下载api响应

时间:2014-11-29 07:20:34

标签: javascript php angularjs

我正在使用角和laravel。在发布请求上,PHP创建一个文件并使用文件名进行响应。如何使用该文件名并从angular。触发下载。

api请求

    var promise = $http.post('api/admin/ecs/singleecs', data).
        success(function (response) {
             //trigger file download
    })

PHP

PDF::loadHTML($html)->setPaper('a4')->setWarnings(false)->save('public/temp/'.$filename.'.pdf');
return $filename;

2 个答案:

答案 0 :(得分:0)

要解决此问题,我会采取以下步骤:

  1. 在页面上创建一个隐藏的元素。

    <a id="fileDownloadLink" ng-hide="true" ng-href={downloadUrl} />
    
  2. 使用以下代码设置下载URL并触发下载。

    $scope.downloadUrl = response.data.fileName;
    
    var fileDownloadLink = document.getElementById("fileDownloadLink");
    fileDownloadLink.target = "_blank"; // Opens the file in a new window.
    fileDownloadLink.click();       
    

答案 1 :(得分:0)

您可以使用$window.location来触发下载。仅当“Content-Disposition:attachment”位于resource_url的响应标头中时,此方法才有效:

var promise = $http.post('api/admin/ecs/singleecs', data)
                   .then(function (response) {
                     $window.location = response.resource_url;
                   });

注意:这是此处所示的jQuery模式的角度版本:https://stackoverflow.com/a/11620720/271178