用HttpListener實現檔案下載
和asp.net中一樣,如果要實現url重定向,使用response.Redirect()方法即可,在中使用如下:
string desUrl = "http://www.google.com";
response.Redirect(desUrl);
response.OutputStream.Close();
如果desUrl執行的是網路上的一個檔案,一般ie就會提示檔案下載。但是,許多時候,ie會開啟這個檔案(如目標是文字檔案就會這樣),這有時不是我們所需要的,如何強制ie以下載的方式獲取檔案呢?解決方式如下:
static void ProcessHttpClient(object obj)
{
HttpListenerContext context = obj as HttpListenerContext;
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
response.ContentType = "application/octet-stream"
string fileName = "time.txt";
response.AddHeader("Content-Disposition", "attachment;FileName=" + fileName);
byte[] data = Encoding.Default.GetBytes(string.Format("當前時間: {0}", DateTime.Now));
response.ContentLength64 = data.Length;
System.IO.Stream output = response.OutputStream;
output.Write(data, 0, data.Length);
output.Close();
}
這種方式有一個小問題,那就是當檔名為中文時,會產生亂碼,解決方法是用呼叫HttpUtility.UrlEncode 函式對檔名進行編碼。