How to implement a file download in asp.net

后端 未结 2 706
花落未央
花落未央 2020-11-27 16:00

What is the best way to implement, from a web page a download action using asp.net 2.0?

Log files for a action are created in a directory called [Application Root]/L

相关标签:
2条回答
  • 2020-11-27 16:13

    http://forums.asp.net/p/1481083/3457332.aspx

    string filename = @"Specify the file path in the server over here....";
    FileInfo fileInfo = new FileInfo(filename);
    
    if (fileInfo.Exists)
    {
       Response.Clear();
       Response.AddHeader("Content-Disposition", "attachment; filename=" + fileInfo.Name);
       Response.AddHeader("Content-Length", fileInfo.Length.ToString());
       Response.ContentType = "application/octet-stream";
       Response.Flush();
       Response.TransmitFile(fileInfo.FullName);
       Response.End();
    }
    


    Update:

    The initial code

    Response.AddHeader("Content-Disposition", "inline;attachment; filename=" + fileInfo.Name);
    

    has "inline;attachment" i.e. two values for Content Disposition.

    Don't know when exactly it started, but in Firefox only the proper file name was not appearing. The file download box appears with the name of the webpage and its extension (pagename.aspx). After download, if you rename it back to the actual name; file opens successfully.

    As per this page, it operates on First Come First Served basis. Changing the value to attachment only solved the issue.

    PS: I am not sure if this is the best practice but the issue is resolved.

    0 讨论(0)
  • 2020-11-27 16:28

    Does this help:

    http://www.west-wind.com/weblog/posts/76293.aspx

    Response.ContentType = "application/octet-stream";
    Response.AppendHeader("Content-Disposition","attachment; filename=logfile.txt");
    Response.TransmitFile( Server.MapPath("~/logfile.txt") );
    Response.End();
    

    Response.TransmitFile is the accepted way of sending large files, instead of Response.WriteFile.

    0 讨论(0)
提交回复
热议问题