我从ASP.NET MVC控制器返回一个文件,我想使用AngularJS将其作为附件下载。
MVC控制器:
return File(renderedBytes, mimeType);
AngularJS:
function generatePDF(reportRequest) {
var reportController = "Report";
var controllerUrl = ngAppSettings.homeBaseUri + reportController + "/GeneratePDF";
var deferred = $q.defer();
$http({
method: "POST",
url: controllerUrl,
data: reportRequest
}).success(function (data, status, headers, cfg) {
//window.open(controllerUrl, "_self", "");
deferred.resolve(data);
}).error(function (err, status) {
deferred.reject(err);
});
return deferred.promise;
};
我已经尝试了各种方法来解决类似的问题,但我不明白
我也试过这个。
我的断点在GeneratePDF控制器内没有任何问题,但之后什么也没发生。我该怎么做?
编辑:
我也尝试了角度文件保护程序,但我得到了一个错误,格式应该是BLOB。如果我只能将响应转换为blob,那么我想这可能就是它。
TIA
如果您的C#控制器端点返回FileContentResult(看起来确实返回了),那么您不需要担心promise。您可以简单地执行以下操作。。。
function generatePDF(reportRequest) {
var reportController = "Report";
var controllerUrl = ngAppSettings.homeBaseUri + reportController + "/GeneratePDF";
window.open(controllerUrl, "_blank");
};
我在我的一个应用程序中这样做,它正在按预期工作。您使用$q服务返回承诺有什么特殊原因吗?