![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| iluvatar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
Доброго времени суток, господа.
Столкнулся с одной проблемокой, но официальная документация не помогла. В проекте использую Struts. Есть форма, через которую в форму с клиента грузится картинка. Как можно ограничить размер загружаемой картинки? При этом хочется чтобы файл не грузился, а сначала просто проверялся его размер. Почитав документацию нашел, что в файле struts-config.xml можно прописать строчку
Однако, это работает на все action'ы. А если я захочу на следующей форме задать другой размер? В общем, вопрос открыт. Заранее благодарю за умные советы. Добавлено через 5 минут и 33 секунды И еще: только что проверил, оказывается если прописать контроллер, то все равно сначала файл грузится, а потом уже проверяется на размер. |
|||
|
||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: 6 Всего: 12 |
Сделай зак4ку 4ерез сервлет. А не 4ерез струтс action.
|
|||
|
||||
| iluvatar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
А можно поподробнее?
|
|||
|
||||
| iluvatar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
В общем, выяснилось, что Struts 1 этого не умеет:
тынц Возможно кто-то подскажет, как проверить размер файла через сервлет не скачивая его на сервер? |
|||
|
||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: 6 Всего: 12 |
Это не возможно сделать. Файл сна4ала зака4ивается на сервер в Temp директорию, а то;ько потом сервлет решает 4то с ним делать. Для аплода тебе надо Jakartа FileUpload. На форуме несколько раз уже осуждали. Добавлено через 3 минуты и 59 секунд Хотя я бы сделал на твоём месте так. В струтсе поставил бы max razmer каторуй ты хо4еш высылать. И создал бт интерфейс с клю4ами типа: public static final long LITTEL_FILE= 12...; public static final long NORMAL_FILE= 19...; И потом в акшене проверял бы FormFile на размер исползуя ети клю4и из интерфейса. Это сообщение отредактировал(а) Tony - 18.9.2007, 11:11 |
|||
|
||||
| iluvatar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
Да но тогда если клиент даст мне файл размера, скажем, 10 Гб он мне сервер поломает, а я не хочу чтобы мой сервер был сломан. Нужна защита от подобных случаев.
Сейчас же проверка на размер прописана в <controller>. И все работает, только проверка на размер происходит ПОСЛЕ скачивания на сервер. Это сообщение отредактировал(а) iluvatar - 18.9.2007, 11:21 |
|||
|
||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: 6 Всего: 12 |
Ну так если у тебя в аппликации надо максимум 10 метров то и поставь 10 метров в струтсе а остальные все в интерфейс.
|
|||
|
||||
| iluvatar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
Что-то слабо понимаю о чем речь. Можно поподробнее?
Возможно, подобная опция есть в настройках tomcat'a. Может, кто-нибудь знает? Это сообщение отредактировал(а) iluvatar - 18.9.2007, 13:10 |
|||
|
||||
| iluvatar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
||||
|
||||
| iluvatar |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
Нашел в сети замечательную по описаниям штуку - uploadbean1.7.
Однако не могу приконнектить к проекту. Кто-нибудь пользовался ей? В строке
IDEA видит класс UploadBean, однако при попытке загрузить страницу с клиента вылезает серия ошибкок:
Никак не могу понять в чем дело. Однако, судя по описанию uploadBean способен решить возникшую у меня проблему. Это сообщение отредактировал(а) iluvatar - 25.9.2007, 08:36 |
||||
|
|||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: 6 Всего: 12 |
нету пакета: package javazoom.upload does not exist
Добавлено через 4 минуты и 25 секунд Вообще меня етот вопрос заинтерсовал. Т.к еть время покавираюсь. |
|||
|
||||
| iluvatar |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
Значит, начну по порядку.
Например, на странице есть input для закачки файла на сервер (картинка, текст, аватар, mp3...). Собственно выполняется довольно просто - форма, инпут и т.д. Но есть проблема - как узнать размер файла ДО закачки на сервер (чтобы трудоголик-сервер не качал гигабайты, а потом, проверяя файл говорил - неверный размер). В файле struts-config.xml есть опция
Однако, это проверка на размер ПОСЛЕ закачивания на сервер. На бескрайних просторах гугл-нета я набрел на Upload Bean. Устанавливается просто - просто копируем jar-файлы в папку "WEB-INF/lib". Есть несколько примеров работы. Насколько я понял принцип работы, делаем так: 1. В нашем jsp-файле с формой не меняем НИЧЕГО. 2. В jsp-файл, на который переходим из формы (<form action="next.jsp") вставляем следующие строки: импорт классов:
меппинг обработки:
и алгоритм обработки, например:
Таким образом, переходя на следующую jsp выполняется код обработки (3), в которой и выполняются все проверки. Если я где-то неправ, поправьте меня. Чем плохи примеры - все они переходят на ту же страницу, с которой начинались. А вот что делать если я хочу сначала выполнить какой-нибудь action? Ведь перефдя на него, я стану грузить файл? Может кто-нить подскажет? Это сообщение отредактировал(а) iluvatar - 25.9.2007, 13:53 |
||||||||
|
|||||||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: 6 Всего: 12 |
Проводя тесты полу4илось сделать только для сервлета. ЕСли променять контоллер , то работать не будет. ПРименая контоллер полу4ается вот 4то. Сна4ала орабатывает фильтр в катором проверяем размер. Если больше то еррор. Если нет то переда4а идёт дальше на контоллер. Так вот контоллер полу4ает бин с полями null (поля в бине). Может для струтса экшена прокатит не знаю. Коне4но можно попробывать AbstractContрoller t.k я использовал SimpleFormController. Я думаю там прокатит. Тоесть фильтр убрать а втавить в контоллер аплоад листенер и перека4ать файл. Вот. |
|||
|
||||
| iluvatar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
||||
|
||||
| Tony |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: 6 Всего: 12 |
А что мешет вставить форму в iframe ?
Я имелл виду испольозовать AbstractContoller, но это в спринге. Т.к у тебя Струтс возми сервлет и вставь туда этото код. Сегодня но4ью(постараюсь) я запощю результат (полный код,когда математику сделаю |
||||
|
|||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |