![]() |
|
Модераторы: Snowy, Poseidon, MetalFan |
![]()
|
|
| VIRTuoZe |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 27.7.2004 Где: Новокуйбышевск (С амарская обл.) Репутация: нет Всего: нет |
Всех приветствую
Возникла небольшая проблема, с которой никак не могу разобраться... скорее всего все элементарно, просто никак не пойму) Есть web-сервер, написанный на delphi с использованием Indy (TidHTTPServer). Когда пользователь запрашивает страницу загрузки файла (через браузер), сервер генерит страницу с такой формой:
Так вот... после отправки данных, я смог только прочитать путь к файлу из параметра fileupload1, а как получить содержимое этого файла? Есть функция:
которая при наличии параметров "PostUserSettings" и "report" вызывается из:
Хоть подскажите в какую сторону копать, откуда вытаскивать содержимое файла?... просто я ни разу с этим не сталкивался Заранее спасибо. |
||||||
|
|||||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
В комплекте Indy нет средств для парсинга мультипарт запросов.
Для составления есть. А для разбора - нет. Так что воспользуйся каким-нибудь сторонним мультипарт парсером. Например этим: ALMultiPartAlternativeParser v.3.50 FWS 8545 k 11 Feb 2008 By Arkadia. MultiPart Alternative objects to encode or Decode stream in mime multipart/Alternative format. Добавлено через 6 минут и 48 секунд Файлик достаточно пухлый, т.к. там весьма приличная библиотека всякой всячины с примерами. Тебе оттуда нужен только парсер. Хотя там много и других полезностей для работы с хттп и прочим. |
|||
|
||||
| VIRTuoZe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 27.7.2004 Где: Новокуйбышевск (С амарская обл.) Репутация: нет Всего: нет |
Snowy, ок, спасибо, сейчас попробую
Очень жаль, что стандартными средствами нельзя сделать... не хотелось бы дополнительные компоненты использовать... Попробую - отпишусь о результате) |
|||
|
||||
| VIRTuoZe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 27.7.2004 Где: Новокуйбышевск (С амарская обл.) Репутация: нет Всего: нет |
К сожалению этот компонент существует только в вариантах для D2005 D2006 D2007 D7, а у меня стоит D6 и поменять нет возможности...
Пойду искать другие компоненты... или придется все через PHP проводить, у него прием файлов прекрасно работает)) |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Это не компонент, а библиотечка.
Причём в исходняках. Не вижу, что может помешать ей работать в 6-ке. В крайнем случае, можно просто посмотреть, как там сделано. В любом случае разбирать нужно текст. Нарезаешь куски по бинду и анализируешь. Если форма твоя, то даже анализировать необязательно - всё определено заранее. Остаётся только разделить на части и декодировать. |
|||
|
||||
| VIRTuoZe |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 27.7.2004 Где: Новокуйбышевск (С амарская обл.) Репутация: нет Всего: нет |
С библиотекой парсера почти разобрался, просто немного недопонял в начале)
Возник другой вопрос, с которым уже второй день бьюсь... Если я правильно понял, то нужно просто подключить в uses "ALMultiPartBaseParser", в процедуре обработки запроса объявить переменную типа "TALMultiPartBaseContent", и сделать что-то типа:
при первом же запросе (просто загрузить форму для отправки файла) вылетает "Access violation at address ...". Я смотрю содержимое RequestInfo.PostStream - оно "=nil", ну ладно, ставлю условие "if RequestInfo.PostStream <> nil then begin", так оказывается оно всегда = nil, т.е., если я правильно понял - пусто. Так вот в этом-то и вопрос - а как получить в виде текста содержимое мультипарт-запроса? Т.е., например, в таком виде:
Я бы его и сам распарсил как надо, это не проблема))) Метод "научного тыка" в этот раз подвел... так и не нашел ничего... |
||||
|
|||||
| VIRTuoZe |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 27.7.2004 Где: Новокуйбышевск (С амарская обл.) Репутация: нет Всего: нет |
ААА!)))
Получилось Прочитал я, наконец-то, то что мне надо было)))
А все оказалось банально и просто))) При описании HTML формы у меня всего одна маленькая опечатка:
"metod=POST", а надо "method=POST". Поправил и сразу увидел то, что мне надо, в параметре RequestInfo.UnparsedParams)))) Snowy, еще раз спасибо)) *ушел парсить полученные данные... |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Сети" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |