Отправка Post-запроса на сервер средствами Delphi. Часть 2

2 минуты на чтение

В этой статье хотел бы поговорить об отправке post-запроса на сервер (на сайт). Мы уже проходили это, только в той части мы проходили о том, как отправить post-запрос на сервер (сайт) только текстовые данные, а если нам надо «залить» например на хостинг картинку или на файлообменник файл, то как тогда быть, вот об этом и поговорим. Все известно, что страница с отправкой такими данными (точнее форма) имеет тип — multipart-from. Для того, чтобы работать нам с таким типом данных форм, необходимо в Uses подключить модуль — idMultiPartFormData. Отлично, теперь используя данный модуль мы можем в своих приложения использовать объект типа данных — TIdMultiPartFormDataStream. Давайте уже приступим к работе с этими данными. Ну как всегда у нас на форме

  • TIdHTTP
  • TIdAntiFreeze
  • TButton

Для начала нам необходимо выбрать сайт, куда мы будем заливать изображение, файл или еще что-то. Я выбрал imagezzz.ru. На этот фотохостинг я буду «заливать» изображения и затем получу ссылку на это изображения, а делать с ней мы что захотим, то и будем. Для начала создаем нашу переменную, но для этого нам надо узнать имя <input type=»file»> на данном сайте, а также адресс скрипта, который обрабатывает данную форму. Для этого я посмотрел исходный код данной страницы сайта и что обнаружил.

  • Имя <input type=»file»> — userimage
  • Скрипт обработки — imagescript.php

Так вроде бы все узнали, создаем переменную и заполняем это поле, путем указания «путь к заливаему файлу на фотохостинг«. Далее все как мы проходили обычный post-запрос к указанному скрипту и его обработка, обычный парсинг данных, как Вам удобно или как я Вам показывал парсинг данных или через регулярные выражения. Вот и все, правда ничего сложного нету?

procedure TForm1.Button1Click(Sender: TObject);
var
MultiData:TIdMultiPartFormDataStream;
html:WideString;
begin
try
MultiData:=TIdMultiPartFormDataStream.Create;
MultiData.AddFile('userimage','C:\1.jpg','image');
MultiData.AddFormField('tags1','1,2');
html:=IdHTTP1.Post('https://imagezzz.ru/imagescript.php',MultiData);
Delete(html,1,pos('Ссылка на страницу с изображением',html));
Delete(html,1,pos('value="',html)+length('value="')-1);
Delete(html,pos('">',html),length(html));
MultiData.Free;
except
on e:Exception do
MultiData.Free;
end;
end;
Facebook Vk Ok LinkedIn Telegram

Похожие записи:

В этой статье я хотел бы рассказать о посылках (отправке) POST-запросов на сервер (сайт). Получение капчи мы прошли, а в некоторых случаях Вам значени капчи надо отправить на сервер например и зарегестироваться на сайте каком-нибудь программно. Вообще в этом с...
Ну вот наконец-то, мы добрались и до отправке sms-сообщений через sms-шлюз средствами Delphi. Теоретическую часть sms-шлюза мы знаем, а также знаем как отправлять email-сообщения средствами Delphi. Это нам все и пригодится в данной статье. Давайте вспомним, чт...
Итак мы многое уже знаем, как отправлять email-сообщения средствами Delphi, через smtp-сервер. Как мы знаем для этого нам нужен компонент TidSMTP ну и конечно же как же без него — это TidAntiFreeze. Также мы уже в курсе как отправлять смс-сообщения, используя ...