[fpc-pascal] Prorammatically sending file using HTTP POST?
bo.berglund at gmail.com
Wed Apr 4 13:50:25 CEST 2018
I have written a Lazarus/FPC program to configure an IoT device via a
tcp server I have implemented on the device. It all works well for
setting the parameters etc.
Now I want to also add a firmware update function to this configurator
program, but I could use some advice regarding the way to send the
The firmware updater service is running on the IoT device on port 80
as a web server and when one connects to that URL with a browser the
1) A login dialog is shown where a username and a password needs to be
2) Next a very simple web form is shown with the following source:
<form method='POST' action='' enctype='multipart/form-data'>
<input type='file' name='update'>
<input type='submit' value='Update'>
3) When the "Browse..." button is clicked one gets to navigate the
file system and select a file to upload. The name is then displayed in
4) Upon hitting the submit button "Update" the file is sent to the IoT
device and used to update the firmware.
Now I want to get rid of the web browser step and integrate the
functionality of the form into the configuration program, but I don't
know how to actually send the POST data to the IoT device so it will
The instructions for the WebUpdater service I have added to the IoT
device has a second alternative for uploading the firmware using curl:
curl -u user:pwd -F "firstname.lastname@example.org" <ip-address>:80/firmware
I don't want to require that curl is present on the PC where my
program will run, though, so I want to implement the actual post
message in my fpc code.
Does someone have a suggestion on how to do this?
By the way, I am using the Indy10 components via the indylaz package.
Lazarus is 1.8.0 and FPC 3.0.4 on Windows7.
Developer in Sweden
More information about the fpc-pascal