Браузер не показывает диалог 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-клиент

0 ответов

Другие вопросы по тегам