Image顯示服務(wù)器上任意絕對(duì)路徑下的圖片(采用二進(jìn)制流實(shí)現(xiàn))
看到這個(gè)題目,有些人會(huì)說,這還不簡(jiǎn)單啊,將URL直接設(shè)置成絕對(duì)路徑不就行了啊。我只能說,如果你這樣說,那么只能說明你沒有經(jīng)過思考,甚至于,還沒有搞清楚Web開發(fā)中前臺(tái)代碼和后臺(tái)代碼到底是什么意思,但是這種做法,在自己做的時(shí)候(未架到IIS),搜狗瀏覽器是可以顯示圖片的(僅此一款可以顯示,所以這種做法沒有意義)。
Image控件是在System.Web.UI.WebControls命名控件中,所以不能像在winform中那樣通過byte[]直接顯示圖片(個(gè)人也有點(diǎn)不太明白這句話,誰如果明白可以解釋一下)。找到的這種方法,是采取將圖片讀取,然后將讀進(jìn)來的二進(jìn)制流寫到一個(gè)頁(yè)面上,然后將Image的URL設(shè)置為此頁(yè)面。下面是我的Demo實(shí)現(xiàn)代碼。
前臺(tái)代碼:
<head runat="server">
<title></title>
<script src="jquery-1.7.1.js" type="text/javascript"></script>
<script type="text/javascript">
function ShowP(obj) {
$("#Image1")[0].src = "ShowPic.aspx?URL=" + obj.id;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="E:\\1.jpg" type="button" value="button" onclick="ShowP(this);" />
<asp:Image ID="Image1" runat="server" />
</div>
</form>
</body>
</html>
ShowPic.aspx的前臺(tái)代碼為空,下面是ShowPic.aspx的后臺(tái)代碼:
public partial class ShowPic : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
#region "根據(jù)照片路徑,將照片轉(zhuǎn)為二進(jìn)制數(shù)組"
string strUrl = Request.QueryString["URL"];
// 以二進(jìn)制方式讀文件
FileStream aFile = new FileStream(strUrl, FileMode.OpenOrCreate, FileAccess.ReadWrite);
// 創(chuàng)建一個(gè)二進(jìn)制數(shù)據(jù)流讀入器,和打開的文件關(guān)聯(lián)
BinaryReader brMyfile = new BinaryReader(aFile);
// 把文件指針重新定位到文件的開始
brMyfile.BaseStream.Seek(0, SeekOrigin.Begin);
//獲取照片的字節(jié)數(shù)組
byte[] photo = brMyfile.ReadBytes(Convert.ToInt32(aFile.Length.ToString()));
// 關(guān)閉以上new的各個(gè)對(duì)象
brMyfile.Close();
#endregion
Response.BinaryWrite(photo);
}
}
在上面我把照片的路徑賦給了按鈕ID,然后將路徑作為參數(shù)來調(diào)用ShowPic.aspx,在ShowPic的后臺(tái)代碼中,將照片以二維數(shù)組的形式寫到頁(yè)面上,如果你直接打開這個(gè)頁(yè)面,會(huì)顯示亂碼。
然后將Image的Url設(shè)置為這個(gè)頁(yè)面,此時(shí)會(huì)顯示圖片。我通過按鈕ID實(shí)現(xiàn)了一下動(dòng)態(tài)加載圖片,到具體應(yīng)用,還有一點(diǎn)點(diǎn)傳參的小問題,關(guān)于JavaScript傳參,這個(gè)還是需要大家自己做個(gè)例子,通過javascript調(diào)試工具,來了解dom結(jié)構(gòu),然后進(jìn)行操作。
相關(guān)文章
Extjs4.1.x 框架搭建 采用Application動(dòng)態(tài)按需加載MVC各模塊完美實(shí)現(xiàn)
中午的時(shí)候發(fā)了第一篇 Extjs4.1.x 框架搭建 采用Application動(dòng)態(tài)按需加載MVC各模塊,發(fā)現(xiàn)實(shí)現(xiàn)上還是有問題,本文將提供詳細(xì)的完美方案2012-11-11
asp.net網(wǎng)站實(shí)現(xiàn)接入QQ登錄示例代碼
相信大家在做開發(fā)的時(shí)候,常會(huì)遇到集成QQ登錄的功能,本文主要說的是利用asp.net代碼的實(shí)現(xiàn)方式,邏輯部分主要還是根據(jù)幫助文檔來的。不懂的同學(xué)可以先看看文檔。下面來一起學(xué)習(xí)學(xué)習(xí)。2016-08-08
ASP.NET MVC HtmlHelper如何擴(kuò)展
ASP.NET MVC 中HtmlHelper方法為我們提供很多html標(biāo)簽,只需在頁(yè)面調(diào)用就行了,但是微軟并沒有把所有的html標(biāo)簽都對(duì)應(yīng)有了擴(kuò)展方法,需要我們自定義HtmlHelper,來滿足我們需要。2016-05-05
基于asp.net MVC 應(yīng)用程序的生命周期(詳解)
下面小編就為大家分享一篇基于asp.net MVC 應(yīng)用程序的生命周期詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12
ASP.NET Core2靜默獲取微信公眾號(hào)的用戶OpenId實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于ASP.NET Core2靜默獲取微信公眾號(hào)的用戶OpenId的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
在FireFox/IE下Response中文文件名亂碼問題解決方案
只是針對(duì)沒有空格和IE的情況下使用Response.AppendHeader()如果想在FireFox下輸出沒有編碼的文件,并且IE下輸出的文件名中空格不為+號(hào),就要多一次判斷了,接下來將詳細(xì)介紹下感興趣的朋友可以了解下,或許對(duì)你有所幫助2013-02-02
.NET 與樹莓派WS28XX 燈帶的顏色漸變動(dòng)畫效果的實(shí)現(xiàn)
所謂顏色漸變動(dòng)畫,首先,你要確定兩種顏色——起始色和最終色,比如從綠色變成紅色,綠色是起始,紅色是終點(diǎn)。這篇文章主要介紹了.NET 與樹莓派WS28XX 燈帶的顏色漸變動(dòng)畫,需要的朋友可以參考下2021-12-12
asp.net 分頁(yè)存儲(chǔ)過程實(shí)例剖析心得
最近修改了個(gè)分頁(yè)存儲(chǔ)過程,作為菜鳥,還是從中獲益良多,這里就開始今天的分頁(yè)之旅了2011-10-10
.net開發(fā)中批量刪除記錄時(shí)實(shí)現(xiàn)全選功能的具體方法
這篇文章介紹了.net開發(fā)中批量刪除記錄時(shí)實(shí)現(xiàn)全選功能的具體方法,有需要的朋友可以參考一下2013-11-11

