There are mechanisms to upload data to http server. Simplest - method GET. Using this method, we actually add custom string to address, like running executable with params. But there is drawback - data size is limited to small amount.
Another method - POST. And that's tricky... there are special formats, headers and etc. But it's possible to post large amounts of data.
For my software development, I found some useful http protocol explanations and examples:
I'm big fan of open source, so for compiling the code, I use Lazarus IDE and FPC compiler and as core TCP/IP protocol implementations - lnet package for lazarus
pre-alpha version of code can be found at Sourceforge