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