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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> upload файлов и форма представления 
V
    Опции темы
fath_fast
Дата 8.7.2008, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Работал с представлением - организовал там довольно-таки непростую форму, описал все фичи в контроле и проч...
Теперь надо добавить в форму возможность загрузки файлов... Добавляю в оперделение формы:
Код

  enctype="multipart/form-data"  

И всё - все значения параметров типа:
Код

 <input type="hidden" name="cm"  value="${fn:length(goods_add.descrips)}"/>

становятся null  smile 

ЧТо делать? как в форму всё-таки добавить поле загрузки файлов?
PM MAIL   Вверх
goodday1941
Дата 8.7.2008, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



ты какой фреймворк юзаешь?

Добавлено @ 09:23
например для спринга нужно прописать в контексте что-то по типу:

Код

  <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="5120000"/>
        <property name="defaultEncoding" value="utf-8"/>
    </bean>


а далее в контроллере просто забиндить форму, как вариант:

Код

    MyForm myForm = new MyForm();
        ServletRequestDataBinder binder = new ServletRequestDataBinder(myForm);
        binder.bind(request);


ну а MyForm:

Код

public class MyForm{
    private int id;
    private MultipartFile file;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public MultipartFile getFile() {
        return file;
    }

    public void setFile(MultipartFile file) {
        this.file = file;
    }
}


Добавлено через 9 минут и 18 секунд
собственно

private MultipartFile file;

и есть твой файл со всякими там локалпазами, контентайпами и сайзами

Это сообщение отредактировал(а) goodday1941 - 8.7.2008, 09:23


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
fath_fast
Дата 8.7.2008, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



goodday1941, 
Цитата

ты какой фреймворк юзаешь?

Spring

Хорошо, а как выглядит тогда представление?
Просто при дальнейшем обработке запроса в onSubmit получается следующий код (использую Commons FileUpload ):
Код

@Override
    protected ModelAndView onSubmit(
            HttpServletRequest request, 
            HttpServletResponse response, 
            Object command, 
            BindException errors) throws Exception {
        ModelAndView mv = new ModelAndView(getSuccessView());
       List ar = new ArrayList();
       if (ServletFileUpload.isMultipartContent(request)){
         
       ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());
      List fileItemsList = servletFileUpload.parseRequest(request);  // этот метод обрабатывает multipart поток
// и возвращат множество (!) из контроллов содержащих файл-описание 
     ar.add(fileItemsList.size());

........


У меня при редактировании контекста, как ты указал:
Код

   <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="5120000000"/>
        <property name="defaultEncoding" value="utf-8"/>
    </bean>


то множество (!) - см. в комментах вообще не содержит никаких значений там...
ОТсюда возникает вопрос целесобразности использования Commons FileUpload... 
Можешь показать свой пример  обработки запроса загрузки файла  с твоим конфигом?




PM MAIL   Вверх
fath_fast
Дата 8.7.2008, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Хорошо, разобрался, чтобы сохранить загрузить файл в контролле в методе onSubmit :

прописал:
Код

MyFormюgetF().transferTo(new File("C:\\files\\"+((Object)System.currentTimeMillis()).toString()+".jpg"));

Но это загружает только один файл... А если, прдположим, пользователю нужно предоставить загрузку неограниченного количества файлов, т.е. неограниченно количество file-контроллов на форме:


В голом Commons FileUpload это задачу так решают:
Код

ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());
            List fileItemsList = servletFileUpload.parseRequest(request);



А в Spring-e этото фокус не проходит - он не видит что в request есть какие-то files....
Как быть?




Это сообщение отредактировал(а) fath_fast - 8.7.2008, 12:55
PM MAIL   Вверх
fath_fast
Дата 9.7.2008, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Проблема решена! Всем спасибо!
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.0443 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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