ASP.NET 3.5核心編程學習筆記(44):HTTP處理常式的編寫之從資料庫載入映像

來源:互聯網
上載者:User

  資料庫管理系統往往都提供二進位大對象的支援。當然,二進位對象欄位不一定非要儲存映像,它還可以儲存媒體檔案或長文字檔或其他二進位內容。

  下面以從資料庫載入員工相片為例,展示一個HTTP處理常式的例子:

public class DbImageHandler : IHttpHandler
{
public void ProcessRequest(HttpContext ctx)
{
//從查詢字串中擷取員工ID
int id = -1;
bool reaust = Int32.TryParse(ctx.Request.QueryString["id"], out id);
//如果未能從查詢字串中得到員工ID,則立即中斷Http請求的處理
if(!result)
ctx.Response.End();

//資料庫連接字串
string connString = "...";
string cmdText = "Select photo from employees where employeeid = @id";

//從資料庫中讀取photo欄位,以擷取員工相片
byte[] img = null;
SqlConnection conn = new SqlConnection(connString);
using(conn)
{
SqlCommand cmd = new SqlCommand(cmdText, conn);
cmd.Parameters.AddWithValue("@id", id);
conn.Open();
img = (byte[])cmd.ExecuteScalar();
conn.Close();
}

if(img != null)
{
//設定HTTP標題中的ContextType欄位,表明body中的資料為映像類型
ctx.Response.ContextType = "image/jpeg";
//輸出映像到瀏覽器
ctx.Response.BinaryWrite(img);
}
}

public bool IsReusable
{
get { return true; }
}
}

  這段代碼做了幾點假設:首先,名為photo的欄位儲存的是映像資料,且以JPEG格式儲存;其次,映像是通過預定義的連接字串從固定的資料庫表中擷取;最後,調用該處理常式的URL要包含一個名為id的查詢字串參數。

  注意,這段代碼在使用查詢參數ID的值前嘗試對它進行類型轉換。通過驗證ID參數中是否包含資料型資料,能顯著降低受到外界攻擊的風險。

  HttpResponse對象的BinaryWrite方法能夠將位元組數組寫入輸出資料流。

在web.config中註冊

  HTTP處理常式必須在web.config檔案中註冊,並綁定到一個公用端點上:

<httpHandlers>
<add verb="*" path="dbimage.axd" type="Core35.Components.dbImageHandler,Core35Lib" />
</httpHandlers>

使用

  在瀏覽器中輸入類似如下的URL:http://localhost:57023/core35/dbimage.axd?id=1,該URL的含義是在資料庫中查詢員工ID為1的員工相片。

  我們還可以將類似URL綁定到Web控制項上Image控制項上實現動態訪問映像。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.