Окно «Сохранить как» не появляется сразу после отправки запроса на загрузку файла (HTTP GET) - PullRequest
0 голосов
/ 03 декабря 2018

Я использую HttpServletResponse для реализации метода загрузки файлов.После отправки запроса на загрузку файла с передней веб-страницы окно «Сохранить как» не открывается сразу.Вместо этого кажется, что после того, как часть файла кэширована, появляется окно «Сохранить как».

Например, если размер загружаемого файла составляет 67,5 МБ, когда «Сохранить как»Появляется окно, я нажимаю кнопку «Сохранить», после чего прогресс загрузки, который показывает браузер (chrome), уже достиг 15,9 / 67,5 МБ.И затем прогресс показывает 31,8 / 67,5 МБ, 47,8 / 67,5 МБ, 63,7 / 67,5 МБ, 67,5 / 67,5 МБ.

Если размер загружаемого файла составляет менее 15,9 МБ, через некоторое время, когда появляется окно «Сохранить как», я нажимаю кнопку «Сохранить», затем браузер (Chrome) напрямуюсохраняет весь файл на диск, кажется, что весь файл уже был кэширован, как только появляется окно «Сохранить как».

Код JavaScript на передней веб-странице, используемый для отправки запроса на загрузку:

   window.parent.location.target = "_blank";
   window.parent.location.href = url;

Часть кода для загрузки файла на сервер:

    // the type of response is HttpServletResponse
    response.setHeader("Content-Disposition", "attachment; filename=" 
                     URLEncoder.encode(gridFSFile.getFilename(), "UTF-8"));
    response.addHeader("Content-Length", "" + gridFSFile.getLength());
    response.setContentType("application/octet-stream;charset=UTF-8");

    OutputStream os = response.getOutputStream();

    byte[] buffer = new byte[bufferSize];

    int bytesRead = -1;
    while((bytesRead = downloadStream.read(buffer)) != -1 ) {
        os.write(buffer, 0, bytesRead);
    }
    os.flush();

    downloadStream.close();
    os.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...