Как загрузить файл на сервер с помощью Synapse

Пытаюсь загрузить файл с помощью библиотеки THTTPSendEx.

Мой код:

procedure TForm1.Button1Click(Sender: TObject);
var
 HTTP:THTTPSendEx;
 Data:TMultipartFormDataStream;
 sHTML:string; //Recived HTML code from web
begin
if OpenDialog1.Execute then
begin
 HTTP:=THTTPSEndEx.Create;
 Data:=TMultipartFormDataStream.Create;
 try
  Data.AddFile('myFile', OpenDialog1.FileName);
  Data.DataEnd;
  if HTTP.Post('http://kaon.rghost.ru/files',Data,sHTML) then
  begin
  //Connection established
  //Check HTTP response
  if HTTP.IsSuccessfull then  //HTTP returns "200 OK" code.
  begin
    ShowMessage('File successfully posted to the server.');
  end;
  end else
  begin
   ShowMessage('Can not establish a connection to the server...'+#13+'Network is not avaliable or server socket does not exist.');
  end;
 finally
   FreeAndNil(HTTP);
   FreeAndNil(Data);
 end;
end;
end;

Но ничего не печатает. Подскажите в чем проблема?

Прошу прощения за плохой перевод, я использовал Google Translate

ОБНОВИТЬ:

Рабочий пример для php:

$ url = 'http://kaon.rghost.ru/files'; 
$ FILENAME = 'add.png'; 

$ files = array ('file' => '@'. $ FILENAME); 
  
$ useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: 1.9.0.3) Gecko/2008092417 Firefox/3.0.3'; 

   $ ch = curl_init ($ url); 
   curl_setopt ($ ch, CURLOPT_HTTPHEADER, array ("Content-type: multipart / form-data")); 
   curl_setopt ($ ch, CURLOPT_HEADER, 1); 
   curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); 
   curl_setopt ($ ch, CURLOPT_USERAGENT, $ useragent); 
   curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ files); 
   $ response = curl_exec ($ ch); 

   echo $ response;

person Muhammad    schedule 21.07.2014    source источник
comment
Вы пытались выполнить код в отладчике? Что происходит, когда вы это делаете?   -  person Andy_D    schedule 21.07.2014
comment
Нет, я не пробовал. Код был взят отсюда: stackoverflow.com/questions/11471513/   -  person Muhammad    schedule 21.07.2014
comment
Если вы не можете побеспокоиться о том, чтобы приложить какие-либо усилия для решения своей собственной проблемы, то почему мы должны это делать? Кроме того, размещенный вами PHP-код совершенно лишний и не имеет отношения к вопросу Delphi.   -  person Andy_D    schedule 21.07.2014
comment
Что бы я попробовал: 1. проверить (путем отладки или регистрации) значения результатов запросов POST: код состояния ошибки HTTP и тело ответа (в переменной sHTML). 2. отладка 3. Используйте HTTP-прокси (например, Fiddler2) для захвата и анализа HTTP-запроса и ответа.   -  person mjn    schedule 21.07.2014
comment
Дело не в том, что я не пытаюсь решить проблему, а в том, что я не знаю Delphi и поэтому буду очень признателен, если вы сможете мне помочь.   -  person Muhammad    schedule 22.07.2014
comment
Может уже есть образец? В русскоязычном сегменте интернета решений не нашел   -  person Muhammad    schedule 22.07.2014


Ответы (1)


Для публикации файла на ЛЮБОМ веб-сайте требуются файлы cookie и/или параметры публикации, и/или действительное имя поля ввода для файла. Это минимум того, что нужно для отправки файла на сервер.

Вы просто копируете пример, вставляете свой URL и загружаете файл в поток. Нет, это не сработало.

Я не вижу в вашем коде ничего из того, что требуется rghost.ru для размещения файлов.

person AlexLL    schedule 21.07.2014
comment
Нет, куки здесь не нужны, мой php-скрипт для загрузки файла без проблем:Пожалуйста, посмотрите на код, который я разместил выше kotryj - person Muhammad; 21.07.2014
comment
Я повторяю еще раз: вы не исследовали веб-сайт, прежде чем писать для него код. Поле ввода с именем файла выбирает - person AlexLL; 21.07.2014
comment
Я изучил его и написал скрипт, запускающий загрузку php. Нужно отправить всего два значения: file (имя поля — file) и token (имя поля — authentication_token). Второй параметр является необязательным, и без него загрузка проходит успешно. - person Muhammad; 21.07.2014
comment
Да, он успешно загрузил файлы - person Muhammad; 22.07.2014