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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Копирование файла с клиента на сервер. Используется JSP. 
:(
    Опции темы
sergush
Дата 30.12.2005, 01:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Пользователь на jsp-страничке выбирает файл (input type=file). Мне нужно скопировать файл на сервер. Как это можно сделать? Заранее благодарен за любую помощь.
  Вверх
onsh76
Дата 30.12.2005, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



В Servlet API нет метода, который бы мог Вам помочь зааплодить файл.
Посему используем 3-rd party libraries, как-то:
- Commons FileUpload ;
- Jason Hunter's MultipartRequest из cos.jar library . Примитивный пример сервлета смотрим; здесь:
- если работаете со Spring framework, то смотрим как это делается здесь -
( кстати спринг использует вышеуказанные библиотеки).

PM MAIL   Вверх
sergush
Дата 2.1.2006, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо onsh76. FileUpload творит чудеса.
P.S. Что такое Spring framework даже не представляю. smile
PM MAIL   Вверх
onsh76
Дата 9.1.2006, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Пожалуйста... smile
Очень рекомендую углубиться в SpringFramework... Попробуя один раз это дело, потом за уши не оттащищь!
PM MAIL   Вверх
DEMOVERSION
Дата 11.1.2006, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



primer mozhesh polozut??? spasibo
PM MAIL   Вверх
sergush
Дата 12.1.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Если пример использования FileUpload, то подробное описание использования (на ангельском) можно посмотреть здесь: http://jakarta.apache.org/commons/fileupload/using.html.
Мой код разбора запроса:
Код

        if(FileUpload.isMultipartContent(request)){
            try{
                FileItemFactory factory = new DiskFileItemFactory();
                ServletFileUpload upload = new ServletFileUpload(factory);
                List items = upload.parseRequest(request);
                Iterator iter = items.iterator();
                while(iter.hasNext()){
                    FileItem item = (FileItem)iter.next();
                    if(item.isFormField()){
                        String name = item.getFieldName();
                        String value = item.getString("windows-1251");
                        if(name.equals("name"))
                            ...
                        else if(name.equals("date"))
                            ...
                    } else {
                        //item содержит передаваемый файл
                        //используешь его по своему усмотрению
                        //item.write(file); - копировать в file(тип java.io.File)
                    }
                }
            } catch(FileUploadException fue){
            } catch(UnsupportedEncodingException uee){
            }
        }

Критика приветствуется.
Дальше вопрос. В FileUpload
Код

public static final boolean isMultipartContent(HttpServletRequest httpServletRequest)
объявлен устаревшим и может кто-нибудь подскажет как использовать метод
Код

static boolean isMultipartContent(RequestContext ctx).
Где взять объект, реализующий RequestContext? Если не трудно можно код привести или ссылку. Спасибо.
PM MAIL   Вверх
onsh76
Дата 15.1.2006, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(sergush @ 12.1.2006, 15:54)
...
Дальше вопрос. В FileUpload
Код

public static final boolean isMultipartContent(HttpServletRequest httpServletRequest)
объявлен устаревшим и может кто-нибудь подскажет как использовать метод
Код

static boolean isMultipartContent(RequestContext ctx).
Где взять объект, реализующий RequestContext? Если не трудно можно код привести или ссылку. Спасибо.

Ответ на первый вопрос:

Код

public static final boolean isMultipartContent(javax.servlet.http.HttpServletRequest req)

    Deprecated. Use the method on ServletFileUpload instead.


Ответ на второй:

http://jakarta.apache.org/commons/fileuplo...docs/index.html
Код

All Known Implementing Classes:
    PortletRequestContext, ServletRequestContext 


PM MAIL   Вверх
DEMOVERSION
Дата 17.1.2006, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А DiskFileItemFactory в какой либе, его у меня с коммансами нету. спасибо
PM MAIL   Вверх
batigoal
Дата 17.1.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Судя по доке, должен быть в FileUpload...


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
onsh76
Дата 18.1.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(DEMOVERSION @ 17.1.2006, 18:38)
А DiskFileItemFactory в какой либе, его у меня с коммансами нету. спасибо

Смотрим javadoc по DiskFileItemFactory:
PM MAIL   Вверх
Andrey1
Дата 20.1.2006, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Что-то я не пойму...
ServletFileUpload.isMultipartContent(request) бросается ложью на JSP страничке, хотя
посылается к ней форма:
Код

<form action="load_file.jsp" method="post" enctype="multipart/form-data">
    <input type="file" name="input" /> 
    <br />
    <input type="submit" />
</form>

Что не правильно может быть?

Об этой же (похоже) проблеме человек пишет тут: http://forums.devshed.com/java-help-9/uplo...let-256772.html

Это сообщение отредактировал(а) Andrey1 - 20.1.2006, 13:20


--------------------
Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания.
из сутры помоста шестого патриарха Хуэйнена
PM MAIL WWW ICQ   Вверх
Andrey1
Дата 20.1.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Разобрался... Это там что-то в кэше растряло...


--------------------
Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания.
из сутры помоста шестого патриарха Хуэйнена
PM MAIL WWW ICQ   Вверх
DEMOVERSION
Дата 20.1.2006, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Кто может вышлите пожалуйста свой пример мне на почту [email protected]

Или может закиньте сюда рабочий пример, например какой-то екшин????

Спасибо

Это сообщение отредактировал(а) DEMOVERSION - 21.1.2006, 13:58
PM MAIL   Вверх
Ярополкъ
Дата 28.8.2007, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 21.7.2007
Где: Russia, Stavropol

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



Народ, помогите. Уже голову сломал себе. Не могу upload реализовать никак.  smile 
Уже начитался и на русском языке и на аглицком. Но чего-то не получается.

Вот форма посылающая запрос:
Код


<FORM name="uploadfile" ACTION="${pageContext.request.contextPath}${actpage.handle}.html" method="POST" ENCTYPE="multipart/form-data">
        <input type="file" name="ExportFile" value="">
        <input type="submit" value="Export" name="btUpload" />
</FORM>


А вот принимающая:

Код

   boolean isMultipart = ServletFileUpload.isMultipartContent(request);
   if (isMultipart){
       // Create a factory for disk-based file items
        FileItemFactory factory = new DiskFileItemFactory();

        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);

        // Parse the request
        List /* FileItem */ items = upload.parseRequest(request);
%>
<%=" is Empty: " + items.isEmpty()%><%



Результат последней строчки is Empty: true. Что говорит о том что реквест пришел без файла и без данных формы.
Подскажите люди добрые че делать???

Могу вот еще что добавить. 
Код


${pageContext.request.contentType}

дает резульлтат:

multipart/form-data; boundary=---------------------------317552952224136

Что правда это значит я не знаю. Мож кто подскажет. Буду благодарен за любую инфу smile 
PM MAIL WWW GTalk   Вверх
Ярополкъ
Дата 29.8.2007, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 21.7.2007
Где: Russia, Stavropol

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



Вчера, как чуйку поймал - не зря проблемой озадачился. Решил наконец-то проблему. Код который я приводил в прошлом посте верный. Ну, потенциально верный smile (проверить возможности не было). А проблема возникла у меня вот почему. Я работаю с MagnoliaCMS. Эти  smile сделали собственную обработку мультиформовых запросов и видимо где-то у себя в коде обнуляют мультиформовую часть реквеста,  что не позволяет обрабатывать данные обычным способом.  smile  Уродцы нифига этого не документировали. По крайней мере гуглингом найти в документации нужной информации не получилось. Пришлось ковырять исходники. Вот такая вот жесть. Надеюсь мой пост кому-нибудь в будущем сэкономит время.
PM MAIL WWW GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1119 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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