Delphi – How to upload a file using http post? Delphi 2009

delphidelphi-2009file uploadhttp-postindy

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.

Best Answer

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.