In my iPhone application I need to upload images to a server. I don't worry much about security and stuffs, just need a fast and reliable method. I can embed my image data on the HTTP post request, or I can create a FTP connection to the server (using the SimpleFTPSample from Apple). The disadvantage of each method is:
- HTTP: time out if image too big without way of resuming, and no way to know the upload progress (%)?
- FTP: sometimes I got NSStreamEventErrorOccurred and don't know why (when tested on device, on simulator it works great. So maybe 3G errors?)

My question is, do you have any experience with this problem (upload image to server)? What method do you recommend? FTP, HTTP or other method? Thanks in advance.

For one of my projects, I had the requirement to upload images to a web server from various mobile devices (IE: iPhone and Android devices). I created a Java Servlet that would accept an image through a POST request and save it to the server. There are also links to Objective-C (iPhone/iPad) and Java (Android) clients.
The tutorial is here

A third option would be, if you control the destination server, is to create your own protocol to send data. That could get you the flexibility your desire at the cost of having to deal with the lower level features yourself.