我想在Image
控件中顯示圖像,因爲用戶通過FileUpload
控件選擇圖像文件,但我不想將圖像保存在我的服務器上。使用FileUpload在圖像控件中顯示圖像
回答
無法完成 - 要顯示「預覽」,您必須至少暫時將圖像存儲在服務器的某個位置,以便您可以在頁面上生成並呈現<img>
標記。
你可以做的最好的事情就是把它上傳到內存中,不用保存就用.ashx或其他東西顯示它。
編輯
HTML5之前,你也許可以由有一個JavaScript函數,它的上傳文件的目錄,然後設置IMG SRC屬性設置爲文件路徑做到了。該圖像然後將從他們自己的硬盤驅動器加載預覽。在符合HTML5的瀏覽器中,該文件路徑處於隱藏狀態,因此您無法在JavaScript中使用它。這發生在IE8,Chrome等
這是另一種混亂的方式來做到這一點。
首先,創建一個JavaScript函數,該函數將處理onchange事件上的FileUpload控件。當這個事件觸發時,它會回發整個表單。
function uploadFile() {
var value = $("#<%=fuTest.ClientID %>").val();
if (value != '') {
$("#form1").submit();
}
}
這裏是上傳控件:現在
<asp:FileUpload runat="server" ID="fuTest" onchange="uploadFile()" />
,當有人選擇一個文件,表單發送回來,然後你可以把圖像到存儲在服務器上,並顯示它時,回傳做完了。
它很好,但如何將字節數組(圖像文件)發送到通用處理程序文件(.ashx)? – 2011-02-23 21:04:50
將圖像存儲在緩存對象或會話中,然後傳遞一個密鑰以將其存儲到ashx處理程序。如果您正確設置內容類型,它可以流出圖像。如果要顯示立即預覽,這將不會真正起作用,只會在用戶成功上傳後纔將圖像顯示給用戶,而不會將其存儲在服務器上。 – 2011-02-23 22:11:22
我要顯示立即預覽 – 2011-02-24 08:44:09
您可以做到這一點,但您需要使用具有可指定Bitmap屬性的自定義imageControl。下面是描述一個文章:
這個解決方案是 – 2011-02-23 21:06:16
@hamed不好 - 你想做的事不能做什麼。 dahmsbrak和我的解決方案都至少與你想要做的近似,儘可能多。 – 2011-03-10 17:19:26
我想要當用戶從FileUpload控件中選擇一個圖像時,圖像已自動預覽在圖像控件中。 – 2011-03-12 19:15:39