Загрузка zip-файла в jsp и извлечение содержимого в другой jsp - PullRequest
0 голосов
/ 18 мая 2010

Я хочу загрузить zip-файл на страницу jsp, и пользователь отправляется на другую страницу jsp после того, как он выберет и загрузит файл.

На этой второй странице я хочу

1.) Распакуйте загруженный zip-файл.

2.) Прочитать часть содержимого из извлеченных файлов и разрешить пользователю изменять / редактировать их

3.) Сохранить пользовательские изменения в файлах.

4.) Снова заархивируйте файлы и сохраните их в другом месте.

Пожалуйста, предложите мне приблизительный план решения, поскольку я застрял в фазе, в которой я получаю загруженный файл и перенаправляю пользователя ко второму jsp.

Ответы [ 2 ]

2 голосов
/ 18 мая 2010

Я хочу загрузить zip-файл на страницу jsp ...

Используйте следующий тип формы:

<form action="upload" method="post" enctype="multipart/form-data">
    <input type="file">
    <input type="submit">
</form>

... и пользователь отправляется на другую страницу jsp после выбора и загрузки файла.

Держись. Вы не должны использовать JSP для бизнес-логики. Необработанный код Java принадлежит не файлу JSP, а реальному классу Java. Пусть форма отправляется на Servlet, который, в свою очередь, обрабатывает загрузку файла и, наконец, перенаправляет запрос на страницу JSP для отображения некоторого результата.

1) распакуйте загруженный zip-файл.

Используйте Apache Commons FileUpload для получения загруженного файла. Вы можете найти примеры кода, а также советы и рекомендации (!) В соответствующих разделах Руководство пользователя и Часто задаваемые вопросы на своей домашней странице.

В итоге вы должны получить InputStream, содержащий загруженный файл.

После этого просто используйте API java.util.zip.ZipInputStream для чтения загруженного файла.

2) прочитать часть содержимого из извлеченных файлов и позволить пользователю изменять / редактировать их

Получите данные в объектах модели (javabeans), сохраните их в области запроса или сеанса и используйте JSP / EL для отображения значений модели в полях ввода HTML. Э.Г.

<input type="text" name="foo" value="${fn:escapeXml(bean.foo)}">

JSTL fn:escapeXml как раз для предотвращения XSS .

3) сохранить пользовательские изменения в файлах.

Пусть форма отправляется сервлету, собирает новый вход, записывает его в какой-то файл.

4) Снова заархивируйте файлы и сохраните их в другом месте.

Использование ZipOutputStream.


См. Также

0 голосов
/ 18 мая 2010

Возможно, вы получаете загруженный zip-файл в сервлете.

Для первого шага извлеките содержимое zip-файла, используя http://java.sun.com/j2se/1.4.2/docs/api/java/util/zip/ZipFile.html

Процедура здесь http://java.sun.com/developer/technicalArticles/Programming/compression/

Пример здесь http://www.devx.com/getHelpOn/10MinuteSolution/20447

Простые шаги 2 и 3

Шаг 4 повторного создания zip доступен в http://java.sun.com/developer/technicalArticles/Programming/compression/ (см. Zip.java на этой странице)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...