1. 程式人生 > >用HttpListener實現檔案下載

用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 函式對檔名進行編碼。