我正在使用角和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;
答案 0 :(得分:0)
要解决此问题,我会采取以下步骤:
在页面上创建一个隐藏的元素。
<a id="fileDownloadLink" ng-hide="true" ng-href={downloadUrl} />
使用以下代码设置下载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