|
|
|
Экспорт файла при помощи сервлета
|
|||
|---|---|---|---|
|
#18+
У меня есть сервлет. Он получает из атрибута сессии массив байт соответствующий файлу. Вопрос как лучше передать этот файл в респонс? Что лучше использовать OutputStream Код: plaintext 1. или лучше открывать файл в сервлете и использовать Writer ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Или есть другие более верные способы экспорта файлов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2007, 17:47:11 |
|
||
|
Экспорт файла при помощи сервлета
|
|||
|---|---|---|---|
|
#18+
Зависит от задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2007, 17:50:17 |
|
||
|
Экспорт файла при помощи сервлета
|
|||
|---|---|---|---|
|
#18+
И её условий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2007, 17:50:27 |
|
||
|
Экспорт файла при помощи сервлета
|
|||
|---|---|---|---|
|
#18+
Writer предназначен для передачи текста. В первом случае файл целиком грузиться в память. Соотвественно стоит оценить количество юзверей одновреенно скачивающих файлы и средний размер файла. И прикинуть сколько лишней памяти это будет отжирать. Конечно же перекачака через буфер предпочтительнее, пока мы не захотим кешировать мелкие файлы в памяти. Отедельный вопрос о том стоит ли запихивать что нипопадя неизвесных размеров в сессию. Как на это отреагирует сервер (который дампит сессию в файлы на всякий случай) и потенциальный кластер (который реплицирует сессию на ноды) Ну и если таки выбор останется за вторым вариантом, советую подсмотреть исходники в Tomcat DefaultServlet. Там есть такая фича, как дозакачка. Ну а если требуется ещё и мега перфоманс на этой задаче, то тут тоже есть о чем задуматься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2007, 18:03:50 |
|
||
|
Экспорт файла при помощи сервлета
|
|||
|---|---|---|---|
|
#18+
А можно еще прикрутить статический кэш для файлов. Либо самописный, либо из богатых угодьями проектов Apache. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2007, 18:05:26 |
|
||
|
Экспорт файла при помощи сервлета
|
|||
|---|---|---|---|
|
#18+
В сессию можно помещать при малом числе пользователей и небольших размерах файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2007, 18:06:21 |
|
||
|
Экспорт файла при помощи сервлета
|
|||
|---|---|---|---|
|
#18+
vzf... Он получает из атрибута сессии массив байт соответствующий файлу. так делать плохо... так делать в ряде случаев нельзя... у тебя полно вариантов. Самый простой, на мой взгляд, вариант, раз у тебя вебприложение, завести на сервера статическую директорию, подмепить на нее вебконтекст, когда надо что-то отдать пользователю, можно класть файл в это контекст и выдавать пользователю ссылку на это файл... Ну а оптимальней было бы, выдавать его через апач, бегущий рядом тандемом (если возможно)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2007, 18:26:23 |
|
||
|
Экспорт файла при помощи сервлета
|
|||
|---|---|---|---|
|
#18+
y3uНу а оптимальней было бы, выдавать его через апач, бегущий рядом тандемом (если возможно)... Тут вопрос в секурити упрется и в ассоциацию с HTTP сессией, завязанной в Java логике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2007, 18:32:13 |
|
||
|
Экспорт файла при помощи сервлета
|
|||
|---|---|---|---|
|
#18+
У меня используется только сервер приложений (оракловский) без апача. Вот например буду я складывать все файлы в папку внутри приложения (например http://myapp/files). А как потом эти файлы удалять? Не руками же? А как подмэпить вэбконтекст на директорию, не подкините ссылок ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2007, 18:46:36 |
|
||
|
Экспорт файла при помощи сервлета
|
|||
|---|---|---|---|
|
#18+
vzfУ меня используется только сервер приложений (оракловский) без апача. Вот например буду я складывать все файлы в папку внутри приложения (например http://myapp/files). А как потом эти файлы удалять? Не руками же? А как подмэпить вэбконтекст на директорию, не подкините ссылок ? ну а кто сказал, что будет просто.... как я уже говорил, вариантов масса, как уже сказал мсье Blazkowicz, на то как сделать влияет очень много факторов... как хранить: к примеру, JBoss позволяет задеплоить статическую папку с именем myFolder.war на контекст /myFolder, таким образом можно взять ее как File через URI и делать там с контентом что угодно... Еще, к примеру, можно использовать временную директорию системы - отсылаю в доки... Удалять файло можно по признаку expire date, скажем, используя Quartz, либо сделать отдельный сервлет, который, будучи подмепленым на какой-нибудь URL, по параметру искал бы там файл, зачитывал бы его и клал бы в респонз байтики, ставил длину данных и правильный майм тайп, после чего сам бы затирал контент... Вообще тема довольно обширная, т.к. CMS - э то целая платформа... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2007, 19:58:14 |
|
||
|
Экспорт файла при помощи сервлета
|
|||
|---|---|---|---|
|
#18+
я кстати еще бы попробовал бы поднять FTP, есть на Java всякие embedable FTP Servers, вот, к примеру, в инкубаторе апача есть http://incubator.apache.org/ftpserver/... это самый то ни на есть настоящий менеджинг ресурсов именно на основе файловой системы, там можно квотами рулить на скачивание и есть докачка, изобретать ничего не нужно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2007, 20:02:50 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=623&tid=2145103]: |
0ms |
get settings: |
16ms |
get forum list: |
26ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
46ms |
get topic data: |
16ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 323ms |
| total: | 514ms |

| 0 / 0 |
