ASP.NETはResponseを使用する.WriteFileメソッドによるファイルのダウンロード

1377 ワード

IISでは,ブラウザに直接ファイルのパスを入力することでファイルのダウンロードが可能であるが,この方法ではユーザの権限を制御するのに不便であるため,子豚は以下の方法を用いてファイルストリームを出力する.ファイルを直接ダウンロードする代わりに.
これにより、ファイルをダウンロードする前にユーザーの情報などを検証することができます.
string path = Server.MapPath("~/    .doc");//     

   

System.IO.FileInfo file = new System.IO.FileInfo(path);

   

Response.Clear();

   

Response.Charset = "utf-8";//       

   

Response.ContentEncoding = System.Text.Encoding.UTF8;

   

//      , "    /   "             

   

Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name));

   

//      ,      ,               

   

Response.AddHeader("Content-Length", file.Length.ToString());

   

//                   ,        

   

Response.ContentType = "application/msword";

   

//              

   

Response.WriteFile(file.FullName);

   

Response.End();
重要な説明:ASP.でNETアプリのWeb.configファイルでコンパイル要素のdebug属性値をfalseに設定場合は、ダウンロードするファイルサイズに対してserverを設定する必要があります.scripttimeoutプロパティは適切な値に設定されます.デフォルトではserver.scripttimeout値は90秒に設定されます.ただし、debug属性がtrueに設定場合、server.scripttimeout値は非常に大きな値(300000秒)に設定されます.
 
本編で紹介するのは主にWebFormの下のファイルのダウンロードで、ASP.NET MVCプロジェクトでは、より便利な方法で同じ機能を使用することができます.
詳細については、ASP.NET MVC FileResultの紹介を参照してください.