Asp.Net中級 – 5.HttpHandler案例

來源:互聯網
上載者:User
HttpHandler1

(1) HttpHandler是對請求的響應,可以輸出普通的html內容,也可以輸出圖片、也可以輸出一個檔案(下載)

(2) 輸出一幅動態建立的圖片(能看懂就可以)

(3) 案例1:圖片中顯示訪問者資訊


(4) 案例2:填入朋友的姓名就能產生惡搞的圖片連結

(5) 網上看到的註冊、登入時候的驗證碼也是動態產生的圖片、55.la也是這樣實現的原理。

 

HttpHandler實現檔案下載

(1) 如果HttpHandler輸出的是html、txt、jpeg等類型的資訊,那麼瀏覽器會直接顯示,如果希望彈出儲存對話方塊,則需要添加Header:string encodeFileName = HttpUtility.UrlEncode("過濾詞.txt"); Response.AddHeader("Content-Disposition", string.Format("attachment;filename=\"{0}\"", encodeFileName));其中filename後為編碼後的檔案名稱。filename段為建議的儲存檔案名稱

樣本:

(1)第一步

xiazai1.aspx
<form id="form1" runat="server">    <div>    <a  href="2013-05-07 21-05-25.png">圖片1</a>    </div>    </form>

 

(2)第二步

xiazai1.aspx更改

<form id="form1" runat="server">        <div>            <a href="2013-05-07 21-05-25.png">圖片1</a>            

<a href= "./xiazai2.ashx">圖片2</a>

        </div>    </form>

xiazai2.ashx

public void ProcessRequest(HttpContext context)    {        context.Response.ContentType = "image/jpeg";        context.Response.AddHeader("Content-Disposition", "attachment;filename=image2.jpg");        context.Response.WriteFile("2013-05-07 21-05-25.png");    }

 

(3)第三步

如果儲存為中文名,就會出現亂碼。

public void ProcessRequest(HttpContext context)    {        context.Response.ContentType = "image/jpeg";        context.Response.AddHeader("Content-Disposition", "attachment;filename=腦殘.jpg");        context.Response.WriteFile("2013-05-07 21-05-25.png");    }

需要對 腦殘.jpgUrlEncode

public void ProcessRequest(HttpContext context)    {        context.Response.ContentType = "image/jpeg";        string filename = HttpUtility.UrlEncode("腦殘.jpg");        context.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);        context.Response.WriteFile("2013-05-07 21-05-25.png");    }

 

(2) 動態輸出用處,不用再把資源儲存到磁碟上再輸出(不會有檔案重名的問題,檔案不產生在伺服器端)。案例:點選連結彈出圖片下載對話方塊。Web的原則:能直接將產生的內容以流的形式輸出給瀏覽器,就不要產生臨時檔案。

(3) 用NPOI動態產生一個Excel表然後彈出對話方塊讓使用者下載,檔案名稱是“使用者列表.xls”。

(4) 練習:從資料庫使用者表匯出資料到Excel檔案,讓使用者下載。mdf放到App_Data下,asp.Net不用那段設定DataDirectory的代碼,用DataReader的方式讀取資料

(5) 練習:使用者表增加一個層級欄位。只有登入使用者才能下載images下的圖片檔案(Session中標識是否登入),如果使用者沒有登入則首先重新導向到登入介面讓使用者登入,使用者登入成功則跳轉到下載列表頁面,下載連結固定寫好即可。如果登入使用者是普通使用者則在圖片左上方加上“免費使用者試用”的字樣。“安全退出”。畫頁面流程。

(6) 練習:給上面的程式加上登入驗證碼。

 

(沒仔細看。想看詳細的朋友自己去看看吧)

【傳智播客.Net培訓—asp.net中級】8HttpHandler練習說明.avi

~

~

~

【傳智播客.Net培訓—asp.net中級】13案例:圖庫許可權控制4.avi

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.