Я возвращаю файл с ASP.NET MVC-контроллера, и я хочу загрузить его в виде вложения с помощью AngularJS.AngularJS Сохранить файл из ASP.NET MVC Controller
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;
};
Я пробовал различные способы, как предложено на подобные вопросы по этому поводу, но я не получаю его.
Я пробовал this тоже.
Мои контрольные точки попадают без проблем внутри контроллера GeneratePDF, но после этого ничего не происходит. Как я могу это сделать?
EDIT:
Я также попытался angular file saver, но я получаю сообщение об ошибке, что формат должен быть в BLOB. Если я могу только преобразовать ответ в blob, то я думаю, что это может быть так.
ТИА
Это всего лишь дизайн всех моих угловых сервисов, использующих службу $ q, которую я могу игнорировать, если это проблема. Используя window.open, как передать объект reportRequest в качестве параметра для контроллера GeneratePDF? Мне это нужно для обработки данных. –
Ах, извините, пропустил этот бит. Есть ли много данных в reportRequest или это что-то, что может быть представлено в строке запроса «GET» (ака просто базовые примитивы, из которых вы можете сделать строку запроса)? К сожалению, я не знаю, как сделать «POST», чтобы загрузить документ. Если вам нужно отправить тонну данных для обработки, чтобы сгенерировать PDF-файл, вам нужно будет это сделать, и сервер должен передать обратно токен, который вы затем можете использовать для создания GET (используя window.open) который затем вернет FileResult, который каким-то образом кэшируется на сервере. – sourdoughdetzel
Я не могу передать все данные в виде строки запроса, так как запрос содержит список объектов. Сначала я планировал сделать это, но не продолжал. –