[ASP.net] Response 出一張圖並控制權限

2010/09/23

一個小技巧可以很神奇的將一個.aspx變成圖片..
因為利用這種方式可以處理一些有關於是否有能力讀取圖片權限問題…
所以在案例設計中..
如果您沒有透過get方式帶入tk 此參數而且此參數的內容必須要是1234的話.
將會顯示 你無能力讀取此圖


首先打開一個ASP.net 專案..
看一下.aspx 檔案..
將除了第一行以外的資料..選取..刪除
sshot-107

只有留下..

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="OutputImageSample._Default" %>





sshot-108


沒有這一行程式會跑不起來阿…


接下來我們就看一下 C# 那一端的程式碼..


using System;

namespace OutputImageSample
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//判斷是否帶入tk參數,並且判斷是否正確
if (Request["tk"] == null || Request["tk"]!="1234")
{
Response.Write("你無能力讀取此圖");
}
else
{
//設定 ContentType 為 jpg圖片
Response.ContentType = "image/jpeg";
//注意這邊要用writefile 其中帶入圖片路徑
Response.WriteFile("01lab.jpg");
//將buffer 中的stream全部送出
Response.Flush();
}

}
}
}


 

其中注意如果您要輸出的不是圖片 是其他格式 務必注意一下 您設定的 ContentType..

這時候我們run 起來並且把tk參數帶錯..

結果是:


sshot-110


我們把參數帶正確..


結果:


sshot-111


所以之後 您可以在其他頁面中加入 <img src='http://localhost:60291/Default.aspx?tk=1234' />


就會顯示正確圖片…


當然這可以應用得很多,譬如控制圖片被讀取的次數,讀取的權限,這就可以有很多種發揮了…


ps. http://ianjung1974.blogspot.com/2009/03/content-type.html 這邊有列舉許多 ContentType 必要時可以查查…


讚一下:





範例下載:



0 意見:

程式 . 生活 . D小調.@2010 | Binary Design: One Winged Angel.