Браузер не показывает диалог SaveAs даже после установки Content-Disposition в заголовке ответа
После прочтения нескольких запросов, касающихся настройки Content-Disposition, я наконец написал приведенный ниже код для отправки файла, так что в браузере отображается диалоговое окно SaveAs. Тем не менее, браузер не предоставляет диалоговое окно SaveAs, несмотря на установку "Content-Disposition" в заголовке ответа. Я мог видеть в окне отладки браузера содержимое файла, а заголовок ответа содержит "Content-Disposition". Я не знаю, почему браузер не может показать всплывающее окно SaveAs. Я что-то здесь упускаю?
Код:
@RequestMapping(value="...", method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@ResponseBody
public void getFile(HttpServletRequest request,
HttpServletResponse response,..) {
...
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
// set headers for the response
String headerValue = String.format("attachment; filename=\"%s\"",
file.getName());
response.setHeader("Content-Disposition", headerValue);
// set content length
response.setContentLength((int) downloadFile.length());
IOUtils.copy(inputStream, response.getOutputStream());
response.flushBuffer();
inputStream.close();
...
}
Заголовок ответа при проверке из окна отладки Google Chrome:
Content-Disposition:attachment; filename="ABCDEF.abc"
Content-Length:732
Content-Type:application/octet-stream;charset=UTF-8
Date:Wed, 04 Jun 2014 19:05:37 GMT
Server:Apache-Coyote/1.1
HTML-тег для загрузки файла:
<div class="divCsvReportIcon">
<a class="a-csvReport" href="" target="#"
data-ng-click="fetchCSVData($event)" ng-show="pivotTabContentShow">
<img class="csv-img-icon" src="assets/icons/icon_csv-32.png" >
</a>
</div>
Другая информация: Spring 3.2.x Angularjs основанный HTML-клиент