Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Apach File Upload


Автор: garbuz 19.12.2008, 19:57
Использую апачевскую библиотеку для загрузки файлов на сервер.
В сервлете, перед началом всех действий как всегда делаю
Код

if (request.getParameter(SUBMIT) != null){

Однако значение этого параметра приходит равное null. Почему?

А если выполнить
Код

if (item.isFormField()) {
       processFormField(item);
}
...
private void processFormField(FileItem item) {
        String name = item.getFieldName();
        String value = item.getString();
        System.out.println("Form parameter: name = " + name + " value = " + value);
        
    }

То параметр submit и другие параметры формы уже имеют значение? Хотелось бы с самого начала проверять этот параметр...

Автор: ivg 20.12.2008, 01:03
Цитата(garbuz @  19.12.2008,  22:57 Найти цитируемый пост)
Однако значение этого параметра приходит равное null. Почему?

http://www.w3.org/TR/html401/interact/forms.html#h-17.13
Цитата из спецификации сервлетов:
Цитата

SRV.3.1.1 When Parameters Are Available

The following are the conditions that must be met before post form data will be populated to the parameter set:
1. The request is an HTTP or HTTPS request.
2. The HTTP method is POST.
3. The content type is application/x-www-form-urlencoded.
4. The servlet has made an initial call of any of the getParameter family of methods on the request object.

If the conditions are not met and the post form data is not included in the parameter set, the post data must still be available to the servlet via the request object’s input stream. If the conditions are met, post form data will no longer be available for reading directly from the request object’s input stream.

Вкратце суть в том, что браузер при отправке формы с файлом(ами), ставит Content-Type: multipart/form-data, и такой запрос контейнер не разбирает в набор параметров.

Цитата(garbuz @  19.12.2008,  22:57 Найти цитируемый пост)
Хотелось бы с самого начала проверять этот параметр... 

Проверяйте Content-Type ну и от этого смотрите дальше...

Автор: garbuz 20.12.2008, 03:09
Спасибо! Все понял!  smile 

Автор: _sten_ 20.12.2008, 12:50
Спасибо. Тоже недавно столкнулся с такой проблемой

Автор: garbuz 20.12.2008, 20:48
Закачиваю файлы на сервер. Создаю папку в папке веб приложения и сохраняю туда файл. Все делаю с помощью getServletContext().getRealPath("")
Код

...new File(getServletContext().getRealPath(""), "jars").mkdir()
...
File file = new File(getServletContext().getRealPath("jars"), "file.jar"


Как можно проделать то же самое используя getServletContext().getContextPath()? Что-то у меня не получилось  smile 

Автор: ivg 21.12.2008, 11:35
Цитата(garbuz @  20.12.2008,  23:48 Найти цитируемый пост)
Закачиваю файлы на сервер. Создаю папку в папке веб приложения и сохраняю туда файл

По моему это не хорошо. Мне кажется, что при "передеплое" приложения эти файлы будут удалены!? smile
Цитата(garbuz @  20.12.2008,  23:48 Найти цитируемый пост)
Как можно проделать то же самое используя getServletContext().getContextPath()

Из http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletContext.html#getContextPath():
Цитата

The context path is the portion of the request URI that is used to select the context of the request.
 и, в общем случае, это значение никакого отношения к файловой системе не имеет.

Автор: garbuz 21.12.2008, 15:54
ivg, спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)