Когда я инициирую запрос get
в угловом формате с контроллером webapi
, который отвечает файлом, завернутым в HttpResponseMessage
, браузер не распознает, что это загрузка файла, и данные теряются.Angular is blocking file загрузить
Я проверил в скейтборде, и я вижу, что двоичные данные присутствуют в ответе.
Я инициируя запрос GET с этим:
return $http.get(serviceURLRoot + 'api/myreport/' + dateParams.StartDate + '/' + dateParams.EndDate, { withCredentials: true }).success(function (data) {
});
Если я набираю запрос непосредственно в адресную строку я получаю файл обратно просто отлично. Использование window.open
также работает:
window.open(serviceURLRoot + 'api/rawdatareport/' + dateParams.StartDate + '/' + dateParams.EndDate);
Почему не $http.get
работы?
EDIT -----
Вот HttpResponseMessage, как построен на сервере:
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new ByteArrayContent(pck.GetAsByteArray());
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") {
FileName = "myReport.xlsx"
};
return result;
Что вы делаете с ответом? Ajax сам по себе не будет инициализировать диалог сохранения файла – charlietfl
@charlietfl Я не уверен, имеете ли вы значение на сервере или клиенте. Я обновил вопрос, чтобы показать, как ответ создается на сервере. На стороне клиента это просто показание 'return $ http.get', ничего не исчезло. – Legion