AngularJS从ASP.NET MVC控制器保存文件



我从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服务返回承诺有什么特殊原因吗?

最新更新