|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.05.2008, 17:54 | #1 |
Новичок
Джуниор
Регистрация: 21.05.2008
Сообщений: 2
|
Закачать файл на сайт и принять ответ
Господа, помогите решить проблему.
Есть веб-страничка с формой ввода имени файла, вот исходник: <html> <body> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="image"><br><br> <input type="submit" name="loading" value="Загрузить"> </form> </body> </html> Необходимо заполнить поле с именем файла и отправить на сервер, а потом дождаться ответа от сервера об окончании обработки файла. Вроде просто. Плюхнул на форму Webbrowser, пытаюсь задать значение полю (WebBrowser1.OleObject.Document.for ms.Item(0).Item(0).Value := 'test'). Ага, щазз. Ладно, 2 часа ушло на то, чтобы выяснить, что так можно заполнять все поля, кроме "file" - они принципиально недоступны никакому автозаполнению. ОК. Ищем другой путь. У WebBrowser есть параметр Post, позволяющий передать запрос на сервер. Формируем запрос и отправляем: EncodedStr := 'file=c:\temp\1\123.jpg'; Post := VarArrayCreate([0, Length(EncodedStr) - 1], varByte); for I := 1 to Length(EncodedStr) do Post[I - 1] := Ord(EncodedStr[I]); Header := 'Content-Type: multipart/form-data' + #10#13; WebBrowser1.Navigate('http://mytest/zagruzka.php', EmptyParam, EmptyParam, Post, Header); И никакой реакции. Может, чего с параметром 'file=c:\temp\1\123.jpg' накосячил? Ладно, попробуем еще. У нас же еще idHTTP есть! Пишем: procedure TForm1.Button5Click(Sender: TObject); var FileName: string;response: string; formData: TIdMultiPartFormDataStream; begin FileName := 'c:\temp\1\123.jpg'; formData := TIdMultiPartFormDataStream.Create; formData.AddFile('File',fileName,'m ultipart/form-data'); formData.AddFormField('param1', 'value1'); response := idHTTP1.Post('http://mytest/zagruzka.php',formData); Memo3.Lines.Text:= response; end; Ура, файл отправлен. Но я ожидал, что в response будет ответ сервера о результатах обработки файла, а там вместо этого исходный код веб-странички, с которой все начиналось. Если же вручную заполнить поле и нажать кнопочку, то сервак возвращает все как надо, то есть, он не виноват. Ладно, попробуем максимально приблизиться к ручной работе. Для этого надо установить фокус на строку ввода имени файла, плюхнуть туда имя из буфера, ну дальше понятно. НИГДЕ не нашел, как установить фокус на элемент в WebBrowser. Еще на сам WebBrowser кое-как можно, и то через... ну непрямой путь, а вот на его элементы - не знаю как. В общем, помогите, кто чем может, а то голова уже распухла. День отдал на программу, на которую планировал полчаса выделить. Заранее благодарен. |
21.05.2008, 18:05 | #2 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
я бы предпочел подобную задачу реализовывать без Twebbrowser а просто post-ом и get-ом хотя бы в тех же Indy
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
22.05.2008, 10:30 | #3 |
Новичок
Джуниор
Регистрация: 21.05.2008
Сообщений: 2
|
Так ведь idHTTP - как раз из Indy компонент для этих дел. И он, действительно, реально отправляет файл. Но как после отправки тут же принять ответ сервера о результатах обработки файла? У меня не получилось
|
22.05.2008, 10:43 | #4 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Смотрите внимательно исходный код 99% переадресация там происходит JS-м
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
22.08.2008, 23:19 | #5 | |
Форумчанин
Регистрация: 04.08.2008
Сообщений: 154
|
Цитата:
я сам с такой проблемой сижу посто запрос отправляю, а кучу гет запросов принять не могу |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Отправить , а потом принять пакет. | casper123 | Работа с сетью в Delphi | 3 | 16.08.2008 02:56 |
Как принять GET запрос | eldar | Работа с сетью в Delphi | 2 | 11.08.2008 00:19 |
Как принять сообщение (SendMessage) | Crazyman | Win Api | 4 | 20.02.2008 04:42 |
не могу закачать файл из этого сайта | Rahim1993 | О форуме и сайтах клуба | 4 | 03.01.2008 14:29 |