Я имею в виду, я не использую ServletResponseUtil.

ользую этот код для загрузки существующего файла с сервера на Liferay (6.2) на локальный компьютер:

`

    File file = getFile(diskImage.getImageType(), diskImage.getId());

    HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(request);
    HttpServletResponse httpResp = PortalUtil.getHttpServletResponse(response);

    httpResp.setContentType("application/octet-stream");
    httpResp.setHeader("Content-Transfer-Encoding", "binary");
    httpResp.setHeader("Content-Length", String.valueOf(file.length()));
    httpResp.setHeader("Content-Disposition", "attachment; filename=" + file.getName());

    try (InputStream input = new FileInputStream(file)) {
        ServletResponseUtil.sendFile(httpReq, httpResp, file.getName(), input, "application/octet-stream");
    } catch (Exception e) {
        throw new FilesManagerException(e);
    }
}

`

Этот код отлично работает только для небольших файлов. Но загрузка больших файлов (около 2 ГБ) бросаетjavax.portlet.PortletException: Error occurred during request processing: Java heap space.

Как исправить этот код, чтобы он работал правильно и для больших файлов? Я думаю, что подходящим подходом было бы использовать какой-то буфер для больших файлов, и я пробую это, но впоследствии он не будет работать даже для небольших файлов.

Ответы на вопрос(3)

Ваш ответ на вопрос