#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(); // здесь пишем в поток что хотим сколько угодно, пока принимающая сторона не лопнет } }
Комментариев нет:
Отправить комментарий