Send data (in MB and KB) to server through SIM800L

How to send data, Mb or Kb of such data to server through SIM800L?
Normal TCP request is taking to much time and causing server timeout and other errors.
FTP will be dependent upon network status.
What should be the correct procedure to achieve this?

I would prefer HTTP /TCP over FTP.
A 100KB file took around 10 min to upload in 1KB chunks in 2G for us