a few questions.
Are the files compressed already?
How much traffic are you expecting?
Have you looked into Amazon S3?
You will want to avoid loading the entire file into memory and then trying to send it. Instead, use streams.
This is a good
thread about using streams for downloading large files.
link
With FTP you will need a separate program on your sever, an FTP server. Your users will need an FTP client.
HTTP downloads allows your web server to do the job.
also read
this post on handling large data files