I am trying to programatically download a file through clicking a link, on my site (it\'s a .doc file sitting on my web server). This is my code:
string File
Rather than having a button click event handler you could have a download.aspx page that you could link to instead.
This page could then have your code in the page load event. Also add Response.Clear(); before your Response.ContentType = "Application/msword"; line and also add Response.End(); after your Response.WriteFile(fileInfo.FullName); line.
Try a slightly modified version:
string File = Server.MapPath(@"filename.doc");
string FileName = "filename.doc";
if (System.IO.File.Exists(FileName))
{
FileInfo fileInfo = new FileInfo(File);
Response.Clear();
Response.ContentType = "Application/msword";
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileInfo.Name);
Response.WriteFile(fileInfo.FullName);
Response.End();
}
Oh, you shouldn't do it in button click event handler. I suggest moving the whole thing to an HTTP Handler (.ashx
) and use Response.Redirect
or any other redirection method to take the user to that page. My answer to this question provides a sample.
If you still want to do it in the event handler. Make sure you do a Response.End
call after writing out the file.