http://code.google.com/appengine/kb/java.html#fileforms
показывает вам, как сделать это для загрузки файла, который должен быть выполнен беспересадочный многочастных форм-данных.
Аналогично для нефайловых данных, где вы читаете прямо из потока запросов.
Вам даже не нужно хранить файл/входной поток. Просто выплевывайте обработанные данные в поток выходных ответов, читая входной файл FileItemStream или запрашивая входной поток.
Если для обработки файлов/ввода требуется перемотка вперед, определите максимальное расстояние вперед и используйте это расстояние в качестве размера буфера.
Дальнейшие редактирует
Чтобы ответить клиенту с типом файла, установите ответ тип содержимого или типа пантомимы. , например, у меня были приложения, которые динамически генерировали gif, jpgs, xls, cvs и т. Д.
Нет никакой разницы, является ли источник потока ответа файлом, который вы читаете, или потоком, который вы генерируете динамически. Потому что, даже если у вас есть сохраненный файл, который необходимо отправить в качестве ответа клиенту, вам все равно придется преобразовать его в поток ответов и соответствующим образом присвоить тип содержимого.
Для динамически созданного контента, если вам не нужно кэшировать вывод, вам не нужно генерировать файл в видимом URL-адресе, а затем сгенерировать новую страницу html со ссылкой и отправить эту страницу html в браузер. Вам не нужен браузер пользователя, чтобы обновить себя, чтобы получить эту ссылку.
Вы просто отправляете «файл» непосредственно с потоком ответов. Вы можете создать свой GWT-клиент, чтобы принять «файл», возможно, в именованном фрейме, где именованный фрейм src url - это приложение, которое выполняет динамическое создание файла.
Прочтите http://en.wikipedia.org/wiki/Mime-type, чтобы найти необходимый тип контента.
Если браузер целевого клиента не имеет настройки обработчика содержимого для содержимого контента ответа, он будет обрабатываться или рассматриваться как загрузка файла.
Я часто использовал jsp или jspx для генерации динамически созданных диаграмм или таблиц. Нет сохраненных файлов. Ответ записывается во время чтения запроса. Давайте посмотрим на директиву jsp page, чтобы установить тип содержимого для вызова MS Excel в CSV.
<%@ page language="java" contentType="application/vnd-ms-excel; charset=UTF-8"
pageEncoding="UTF-8"%>
Для сервлета, ServletResponse.setContentType(String)
является метод, чтобы установить тип содержимого.
BTW, этот вопрос не имеет ничего общего с GWT, вы должны удалить тег GWT. Если вы не захотите спросить, как выполнять мультипроцессор в GWT. –