I used something simple like the Web Client in your controller.
System.Net.WebClient client = new WebClient();
client.DownloadFile("url", "directory + filename");
Just specify the url of the file you want to download and then the directory and file name you want to save the file as.
You can then do what you want with the file in your controller.
You can also try:
using (FileStream fs = File.OpenRead(path))
{
int length = (int)fs.Length;
byte[] buffer;
using (BinaryReader br = new BinaryReader(fs))
{
buffer = br.ReadBytes(length);
}
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", String.Format("attachment;filename={0}", Path.GetFileName(path)));
Response.ContentType = "application/" + Path.GetExtension(path).Substring(1);
Response.BinaryWrite(buffer);
Response.End();
}