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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> upload, Загрузка файла на сервер через Applet 
V
    Опции темы
Gugle
Дата 20.3.2008, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А можно на сервере смотреть сколько получено и отправлять их клиенту во время приема данных?
PM MAIL   Вверх
LSD
Дата 20.3.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(Gugle @  20.3.2008,  12:15 Найти цитируемый пост)
А можно на сервере смотреть сколько получено и отправлять их клиенту во время приема данных?

Не знаю, что ты используешь на сервере для приема. Но вообще такое реализовать можно.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Gugle
Дата 20.3.2008, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



На серваке работает tomcat.
Принимаю вот так:
Код

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // Check that we have a file upload request
        if (FileUpload.isMultipartContent(request)) {
            ServletFileUpload upload = new ServletFileUpload(factory);
            String action = null;
            String fileName = null;
            FileItem actualFile = null;
            try {
                List  items = upload.parseRequest(request);
                Iterator iter = items.iterator();
                while (iter.hasNext()) {
                    FileItem item = (FileItem) iter.next();
                    if (item.isFormField()) {
                        // Если обычное поле, то мы можем получить его значение 
                        // в выбранной кодировке с помощью вызова 
                        // getString(нужная кодировка)
                        if (item.isFormField()) {
                            String name = item.getFieldName();
                            String value = item.getString();
                            // В данном случае араметр action
                            if (name.equals("action")) action = value;
                        }
                    } else {
                        // Если файл
                        if (!item.isFormField()) {
                            String fieldName = item.getFieldName();
                            String uploadedFileName = item.getName();
                            if (UPLOAD_FILE_FORM_NAME.equals(fieldName)) {
                                fileName = uploadedFileName;
                                actualFile = item;
                            }
                        }
                    }
                }
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
    }


Принимаю файл с использование пакета fileupload.
Подскажи плз где надо поставить счетчик принятых байт.
PM MAIL   Вверх
LSD
Дата 20.3.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Где тут у тебя непосредственно загрузка файла?
Ты из FileItem должен получить getInputStream() и когда будешь читать из него, считать количество принятых байт.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Gugle
Дата 20.3.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Загрузка идет во время сохранения файла:
Код

File uploadedFile = new File(baseDir, fileName);
java.io.InputStream in = actualFile.getInputStream();
long size = actualFile.getSize();

actualFile.write(uploadedFile);


Эээ..  smile А как во время этой опирации байты подсмотреть?

PM MAIL   Вверх
LSD
Дата 20.3.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Пиши вручную, InputStream у тебя уже есть, создай FileOutputStream и пиши туда. Заодно считай сколько записано байт.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Gugle
Дата 20.3.2008, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вывод в консоль получил.
Еще пара вопросиков.

1. Вот тут веть то же происходит считывание данных?
Код

List items = upload.parseRequest(request);

Отловить процесс можно как нить?

2. На приемной стороне как получать ответы? Веть надо создать поток InputStream(), а
Код

PostMethod filePost = new PostMethod("http://host/some_path");


не возвращает входной поток. Нету такого метода у PostMetod
Код

java.io.InputStream in = filePost.getInputStream();


3. С сервера данные отправлять лучше через?
Код

java.io.ObjectOutputStream outb = new java.io.ObjectOutputStream(response.getOutputStream());

PM MAIL   Вверх
LSD
Дата 20.3.2008, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(Gugle @  20.3.2008,  16:35 Найти цитируемый пост)
Вот тут веть то же происходит считывание данных?

Нет не происходит.


Цитата(Gugle @  20.3.2008,  16:35 Найти цитируемый пост)
На приемной стороне как получать ответы?

Создав новое соединение. HTTP не позволяет в рамках одной сессии паралельно выпонлнять несколько запросов.


Цитата(Gugle @  20.3.2008,  16:35 Найти цитируемый пост)
С сервера данные отправлять лучше через?

Лучше или обычный HTTP или свой простенький протокол.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Gugle
Дата 20.3.2008, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А если я новое http соединение создам он разве будет принимать данные от соединения?
Код

PostMethod filePost = new PostMethod("http://host/some_path");


Добавлено через 1 минуту и 40 секунд
Сервер веть должен отвечать по этому соединению.
PM MAIL   Вверх
LSD
Дата 20.3.2008, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(Gugle @  20.3.2008,  17:02 Найти цитируемый пост)
Сервер веть должен отвечать по этому соединению.

Кому это он должен и сколько? smile 

Почитай уже описание того как работает HTTP.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Gugle
Дата 20.3.2008, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Веть при создании
Код

java.net.URLConnection conn = servlet.openConnection();

мы открываем вых поток
Код

java.io.DataOutputStream out = new java.io.DataOutputStream(conn.getOutputStream());

и должны получить входной для проверки буфера.
PM MAIL   Вверх
LSD
Дата 20.3.2008, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Ты получишь результат выполнения HTTP запроса, и только после того как он выполнится.

Цитата(LSD @  20.3.2008,  17:07 Найти цитируемый пост)
Почитай уже описание того как работает HTTP.



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Gugle
Дата 20.3.2008, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Все. Понял о чем речь.
Прошу прощения за свою глупость...

З.Ы.
Ушел просвещаться.
PM MAIL   Вверх
Gugle
Дата 20.3.2008, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Просто да или нет. smile
Отправляя даннные, я могу посмотреть сколько я отправил, НО в этой "сессии" ("соединении") НЕ сколько принял.
Либо сколько я принял, НО в этой "сесии" я не могу сообщить клиенту сколько я принял ПОКА я не приму данные полностью.
Используя ОДИН метод POST.

Учитывая это я могу передавать данные методом POST, и в этой "сессии" клиент знает сколько данных НЕ ТОЛЬКО ПРИНЯТО НО И ПОЛУЧЕНО используя метод GET, ЕСЛИ сервер умеет сообщать об этом. Для этого я должен сервер научить так делать передая ему некоторый контент.

Это сообщение отредактировал(а) Gugle - 20.3.2008, 18:31
PM MAIL   Вверх
LSD
Дата 20.3.2008, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Вообще ничего не понял.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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