Как сохранять файл из Response сервиса

Сервис отдаёт пользователю скачиваемый pdf файл, но в зависимости от прав пользователя на файл должен или не должен накладываться ватермарк.

Интересует как средствами фильтра в сервлетах java сохранить файл на сервере и уже потом на него кинуть ватермарк и отдать пользователю?

Как взять файл из потока ответа сервера и сохранить на этом же сервере?


Ответы (1 шт):

Автор решения: hwak

Если для установки watermark необходимо использовать какое-то внешнее средство, которое принимает в себя файл, то сконвертируйте ответ сервера в ByteArrayOutputStream и запишите его в файл https://stackoverflow.com/a/17488562/3744622.

Чтобы получить byteArrayOutputStream вам нужно понимать какой тип данных пришёл, если это byte array, то конвертировать можно так: https://stackoverflow.com/a/18575536/3744622

Если это base64, то так https://stackoverflow.com/a/41935362/3744622

Но если есть возможность не использовать файлы, а передать byte array или, скажем, контент файла в base64 представлении напрямую минуя файловую систему сервера, то воспользуйтесь этим вариантом.

Общая рекомендация - не сохраняйте на сервере никаких файлов - это будет всегда медленнее и затратнее, чем если бы вы оперировали с контентом файла из ОЗУ.

→ Ссылка