using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace httpHandler{ /// <summary> /// xiazai1 的摘要說明 /// </summary> public class xiazai1 : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "image/jpeg"; //context.Response.AddHeader("content-disposition","attachment:filename=haha.jpg"); //或者使用下面的asp.net方式添加報文頭,AddHeader是一個老的asp相容的方法 context.Response.AppendHeader("content-disposition", "attachment:filename=haha.jpg"); context.Response.WriteFile("content/DSC06942.JPG"); } public bool IsReusable { get { return false; } } }}
vs2010在項目裡面建立一個一般處理常式就可以得到上面的結果,如果沒有其中的AppendHeader,會直接在瀏覽器上沒有提示的顯示出這張圖片.不過有點鬱悶的是調整發現這個檔案名稱老是不對,顯示的是xiazai1.jpg,準確的應該是haha.jpg,和老師做的一樣,結果卻不同,和Web伺服器有關係?還是瀏覽器?
查了一下資料,原來是打錯了一個字元,在attachment後面應該跟上分號,而不是冒號!
如果想將haha.jpg改成中文的,需要對中文做一下編碼處理,比如
public void ProcessRequest(HttpContext context) { context.Response.ContentType = "image/JPEG"; //context.Response.AddHeader("content-disposition","attachment:filename=haha.jpg"); //或者使用下面的asp.net方式添加報文頭,AddHeader是一個老的asp相容的方法 string filename = HttpUtility.UrlEncode("哈哈.jpg"); context.Response.AddHeader("Content-Disposition", "attachment;filename="+filename); context.Response.WriteFile("content/DSC06942.JPG"); }
這樣就可以將伺服器的一個圖片或者其它檔案改個名字讓使用者來下載了!一切盡在掌握中