How do I upload a file using http post? Delphi 2009

Trevor picture Trevor · Jun 5, 2012 · Viewed 10.7k times · Source

My goal is to upload a text file via HTTP post I am using Delphi 2009.

Say for example to the following URL

https://www.example.com/ex/exampleAPI.asmx/Process

I understand it can be done by using the TIdHttp component. And the following call

IdHttp1.Post();

But I cant figure out how to set up everything i.e. specifying the url and including the file to be posted.

Thanks.

Answer

Remy Lebeau picture Remy Lebeau · Jun 5, 2012

TIdHTTP has two overloaded versions of Post() that take a filename as input:

var
  Response: String;

Response := IdHTTP1.Post('https://www.example.com/ex/exampleAPI.asmx/Process', 'c:\filename.txt');

.

var
  Response: TStream;

Response := TMemoryStream.Create;
IdHTTP1.Post('https://www.example.com/ex/exampleAPI.asmx/Process', 'c:\filename.txt', Response);
...
Response.Free;

Note that you are posting to an HTTPS URL, so you need to first assign an SSL-enabled IOHandler, such as TIdSSLIOHandlerSocketOpenSSL, to the TIdHTTP.IOHandler property beforehand.