powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Экспорт файла при помощи сервлета
12 сообщений из 12, страница 1 из 1
Экспорт файла при помощи сервлета
    #34671238
vzf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vzf
Гость
У меня есть сервлет. Он получает из атрибута сессии массив байт соответствующий файлу. Вопрос как лучше передать этот файл в респонс? Что лучше использовать OutputStream

Код: plaintext
1.
 byte [] exportData = ( byte [])session.getAttribute(session.getId() + SESSION_KEY);
response.getOutputStream().write(exportData);

или лучше открывать файл в сервлете и использовать Writer ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
FileInputStream in =  new  FileInputStream(fileName);
PrintWriter out = response.getWriter();
InputStreamReader reader =  new  InputStreamReader(in);
 char [] buffer =  new   char [ 1024 ];
 int  read;
             
 while ((read = reader.read(buffer)) != - 1 ){
  out.write(buffer,  0 , read);
}
                
out.flush();
out.close();
in.close();

Или есть другие более верные способы экспорта файлов?
...
Рейтинг: 0 / 0
Экспорт файла при помощи сервлета
    #34671250
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зависит от задачи.
...
Рейтинг: 0 / 0
Экспорт файла при помощи сервлета
    #34671252
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И её условий.
...
Рейтинг: 0 / 0
Экспорт файла при помощи сервлета
    #34671327
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Writer предназначен для передачи текста.
В первом случае файл целиком грузиться в память. Соотвественно стоит оценить количество юзверей одновреенно скачивающих файлы и средний размер файла. И прикинуть сколько лишней памяти это будет отжирать. Конечно же перекачака через буфер предпочтительнее, пока мы не захотим кешировать мелкие файлы в памяти.

Отедельный вопрос о том стоит ли запихивать что нипопадя неизвесных размеров в сессию. Как на это отреагирует сервер (который дампит сессию в файлы на всякий случай) и потенциальный кластер (который реплицирует сессию на ноды)

Ну и если таки выбор останется за вторым вариантом, советую подсмотреть исходники в Tomcat DefaultServlet. Там есть такая фича, как дозакачка.

Ну а если требуется ещё и мега перфоманс на этой задаче, то тут тоже есть о чем задуматься.
...
Рейтинг: 0 / 0
Экспорт файла при помощи сервлета
    #34671337
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно еще прикрутить статический кэш для файлов. Либо самописный, либо из богатых угодьями проектов Apache.
...
Рейтинг: 0 / 0
Экспорт файла при помощи сервлета
    #34671340
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В сессию можно помещать при малом числе пользователей и небольших размерах файлов.
...
Рейтинг: 0 / 0
Экспорт файла при помощи сервлета
    #34671395
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vzf... Он получает из атрибута сессии массив байт соответствующий файлу.

так делать плохо... так делать в ряде случаев нельзя...

у тебя полно вариантов. Самый простой, на мой взгляд, вариант, раз у тебя вебприложение, завести на сервера статическую директорию, подмепить на нее вебконтекст, когда надо что-то отдать пользователю, можно класть файл в это контекст и выдавать пользователю ссылку на это файл... Ну а оптимальней было бы, выдавать его через апач, бегущий рядом тандемом (если возможно)...
...
Рейтинг: 0 / 0
Экспорт файла при помощи сервлета
    #34671408
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
y3uНу а оптимальней было бы, выдавать его через апач, бегущий рядом тандемом (если возможно)...
Тут вопрос в секурити упрется и в ассоциацию с HTTP сессией, завязанной в Java логике.
...
Рейтинг: 0 / 0
Экспорт файла при помощи сервлета
    #34671435
vzf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vzf
Гость
У меня используется только сервер приложений (оракловский) без апача. Вот например буду я складывать все файлы в папку внутри приложения (например http://myapp/files). А как потом эти файлы удалять? Не руками же?

А как подмэпить вэбконтекст на директорию, не подкините ссылок ?
...
Рейтинг: 0 / 0
Экспорт файла при помощи сервлета
    #34671609
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vzfУ меня используется только сервер приложений (оракловский) без апача. Вот например буду я складывать все файлы в папку внутри приложения (например http://myapp/files). А как потом эти файлы удалять? Не руками же?

А как подмэпить вэбконтекст на директорию, не подкините ссылок ?

ну а кто сказал, что будет просто.... как я уже говорил, вариантов масса, как уже сказал мсье Blazkowicz, на то как сделать влияет очень много факторов...
как хранить: к примеру, JBoss позволяет задеплоить статическую папку с именем myFolder.war на контекст /myFolder, таким образом можно взять ее как File через URI и делать там с контентом что угодно... Еще, к примеру, можно использовать временную директорию системы - отсылаю в доки...
Удалять файло можно по признаку expire date, скажем, используя Quartz, либо сделать отдельный сервлет, который, будучи подмепленым на какой-нибудь URL, по параметру искал бы там файл, зачитывал бы его и клал бы в респонз байтики, ставил длину данных и правильный майм тайп, после чего сам бы затирал контент...
Вообще тема довольно обширная, т.к. CMS - э то целая платформа...
...
Рейтинг: 0 / 0
Экспорт файла при помощи сервлета
    #34671618
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я кстати еще бы попробовал бы поднять FTP, есть на Java всякие embedable FTP Servers, вот, к примеру, в инкубаторе апача есть http://incubator.apache.org/ftpserver/... это самый то ни на есть настоящий менеджинг ресурсов именно на основе файловой системы, там можно квотами рулить на скачивание и есть докачка, изобретать ничего не нужно...
...
Рейтинг: 0 / 0
Экспорт файла при помощи сервлета
    #34672982
vzf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vzf
Гость
Спасибо за советы, буду думать :)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Экспорт файла при помощи сервлета
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]