Jak wysłać plik przez formularz www z poziomu Delphi

Ludomir

Może się przydać mniej doświadczonym :) Wskazówke opieram o komponent IdHTTP. Można to potraktować jako uzupełnienie do artu Adama o tym. Teraz kod do wysyłania:

uses
  IdMultiPartFormData;

var src: TIdMultiPartFormDataStream(); //typ do którego dodajemy pliki które chcemy wysłać
begin
  src := TIdMultiPartFormDataStream.Create;
  src.AddFile(FIELD, PLIK, 'multipart/form-data');
//FIELD - nazwa pola w formularzu na stornie www
//PLIK - nazwa pliku jaki chcemy przekopiować

  HTTP.Post('http://www.mój.com/index.php', src);

  src.Free;
end;

Formularz WWW może tak wyglądać:

<form enctype="multipart/form-data" action="index.php" method="post">
  Wskaż plik:
  <input type="file" name="plik">
  <input type="submit" name="wyslij" value=" Wyslij ">
</form>

jeżeli chcemy jeszcze jakieś inne dane (np. tekstowe) wysłać to używamy metody:

src.AddFormField(FIELD, VALUE);
src.PrepareStreamForDispatch;  //w przypadku gdy wysyłamy pliki i inne pola formularza

I dalej nie musze tłumaczyć. W taki prosty sposób można wysłać plik na swój serwer, nie łącząc się przez ftp tylko formularz www, lub na kogoś innego (np. 4programmers :))

Zobacz też:

4 komentarzy

To zainstaluj wersje 9.0.18

zainstalowalem indy z tej strony, ale IdMultiPartFormData nie ma ;(. W googlach tez tego nie ma...

Uzywaj w takich przypadkach znacznika <plain>

W miejscu tego formularza miał być kod... Ale wyszedł formularz.

//dopisane
thx :)