Страницы

Поиск по вопросам

вторник, 10 декабря 2019 г.

Можно ли писать каким-нибудь OutputStream в файл, который отдаётся клиенту на лету

#java #http


Дано: большой поток данных, которые надо отдать клиенту в веб-интерфейсе файлом.
Условие: данных много, в памяти держать нельзя, писать в файловую систему тоже нежелательно.
Вопрос: можно ли писать файл клиенту потоком или writer'ом на лету, как будто бы
он просто скачивает файлик с сервера?    


Ответы

Ответ 1



Да, можно. см getWriter и getOutputStream. Более того, такой способ является основным для HTTP. UPD Поскольку простейший вопрос каким-то непостижимым для меня способом получил два голоса, то видимо стоит добавить к ответу краткий пример. Хотя, я в недоумении, откуда взялся такой странный и при этом популярный вопрос, относящийся к самым основам веб-разработки на Java. Если у вас на руках сервлет, то вы из него пишете что хотите и в любом количестве. @WebServlet(name = "MyServlet", urlPatterns = "/my-servlet-path") public class MyServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // ... } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain"); OutputStream os = response.getOutputStream(); // здесь пишем в поток что хотим сколько угодно, пока принимающая сторона не лопнет } }

Комментариев нет:

Отправить комментарий