Избегайте подписи объекта CoyoteOutputStream в весеннем остальном вызове загрузки файла - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть макет проекта Maven Spring-Rest с конечной точкой

@RequestMapping(value = "/rest/{nid}/{fileName:.+}", method = RequestMethod.GET, produces = MediaType.APPLICATION_PDF_VALUE)
    public String getPjSae(@PathVariable String nid, @PathVariable String fileName, HttpServletResponse response) throws IOException {
        LOGGER.info("NID : " + nid);
        LOGGER.info("NOM FICHIER  : " + fileName);
        File file = new File(saePath+File.separatorChar + fileName);
        LOGGER.info("CHEMIN PJ  : " + file);
        if (file.exists()) {
            InputStream inputStream = new FileInputStream(file); //load the file
            // here I use Commons IO API to copy this file to the response output stream, I don't know which API you use.
            IOUtils.copy(inputStream, response.getOutputStream());
            // here we define the content of this file to tell the browser how to handle it
            response.setContentType("application/pdf");
            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".pdf");
            response.flushBuffer();
        }
        return response.getOutputStream().toString();
    }

Я получаю загруженный файл и преобразую его в base64, чтобы записать его в файл XML. Я должен сделать сравнение позже, и проблема заключается в записи подписи объекта в байтовом потоке базы 64: CoyoteOutputStream

В конце каждого base64 из pdf у меня есть кусок:

CnN0YXJ0eHJlZgo0NjkyOAolJUVPRgpvcmcuYXBhY2hlLmNhdGFsaW5hLmNvbm5lY3Rvci5Db3lvdGVPdXRwdXRTdHJlYW1ANDA4YTViYzI=

каждый раз отличается, потому что:

startxref
46928
%% EOF
org.apache.catalina.connector.CoyoteOutputStream@408a5bc2

Итак, эта яма, но сравнение, потому что: @ 408a5bc2 уникально

1 Ответ

1 голос
/ 01 мая 2019

Вы в конечном итоге возвращаете это:

return response.getOutputStream().toString();

Возвращает вывод по умолчанию toString для рассматриваемого выходного потока, т. Е. Ваша подпись объекта CoyoteOutputStream . Если вы хотите избежать этого, не возвращайте его.

...