Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Apach File Upload 
:(
    Опции темы
garbuz
Дата 19.12.2008, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: 8
Всего: 11



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

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 и другие параметры формы уже имеют значение? Хотелось бы с самого начала проверять этот параметр...
PM MAIL   Вверх
ivg
Дата 20.12.2008, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 32
Всего: 81



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

Forms submission in HTML documents
Цитата из спецификации сервлетов:
Цитата

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 ну и от этого смотрите дальше...
PM MAIL   Вверх
garbuz
Дата 20.12.2008, 03:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: 8
Всего: 11



Спасибо! Все понял!  smile 
PM MAIL   Вверх
_sten_
Дата 20.12.2008, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 184
Регистрация: 29.9.2006

Репутация: 3
Всего: 3



Спасибо. Тоже недавно столкнулся с такой проблемой

Это сообщение отредактировал(а) _sten_ - 20.12.2008, 12:53
--------------------
WARNING: Condition 'to_be || !to_be' is always 'true' !
PM MAIL ICQ   Вверх
garbuz
Дата 20.12.2008, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: 8
Всего: 11



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

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


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

PM MAIL   Вверх
ivg
Дата 21.12.2008, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 32
Всего: 81



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

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

Из javadoc:
Цитата

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

Это сообщение отредактировал(а) ivg - 21.12.2008, 11:36
PM MAIL   Вверх
garbuz
Дата 21.12.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: 8
Всего: 11



ivg, спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1065 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.