二进制存储图片
如果我們要將一個圖片文件二進制于數據庫中,那么我們就必須將圖片文件轉化為二進制數據內容,再將二進制數據存儲至數據庫中,這是圖片存儲(或是其它文件數據庫存儲)的基本原則。
至于要從數據庫中讀取圖片數據并將它在頁面中顯示,我們所需要操作的步驟自然是與前面相反既可。從數據庫中讀取的圖片信息是二進制的,那么我們就必須將它轉化為原來的字符類型才能正常顯示。
下面我們將示例一個圖片文件讀取存儲至數據庫并從數據庫中讀取圖片信息并顯示的案例:
1、首先讀取硬盤上的某一具體圖片文件,讀取模式設置為readBinary方式:
<cffile action = "readBinary" file = "temp directory here#file.serverFile#" variable = "test">
2、將讀取出來的二進制內容存儲至數據庫中(注:數據庫字段需設置成能存儲圖片類型的字段,如blob類型):
<cfquery name = "insertImage" datasource = "datasource">
insert into imageTest values (<cfqueryparam cfsqltype="cf_sql_blob" value="#test#">)
</cfquery>
通過1、2兩個步驟,我們輕松實現了讀取圖片文件并存儲至數據庫的操作過程。
3、從數據庫中讀取圖片信息,該文件可命名為dispImage.cfm:
<!--- 在此需特別注意enablecfoutputonly的壓縮空白功能,如果不對該頁面進行空白壓縮,很可能會造成圖片無法顯示的問題 --->
<cfprocessingdirective suppressWhiteSpace="yes">
<cfsetting enablecfoutputonly="yes">
<!--- 讀取相應的圖片信息 --->
<cfquery name = "getImage" datasource = "datasource">
select image from imageTest where id = #some variable here#
</cfquery>
<!--- 設置瀏覽器輸出的格式,我們將它設置為圖片的JPG類型,用戶可根據實際情況改動類型設置 --->
<cfcontent type="image/jpg">
<!--- 輸出圖片 --->
<cfoutput>#toString(imageTest.image)#</cfoutput>
</cfprocessingdirective>
<cfabort>
4、顯示圖片內容,調用dispImage.cfm頁面:
<img src = "dispImage.cfm?id=your variable here">
通過3、4兩個步驟,我們也很容易的就完成了從數據庫中讀取圖片信息并在頁面顯示的功能。
總結:實際上,除了圖片文件可以如此處理,其它的文件也能通過類似方式進行處理,可將任意文件類型存儲至數據庫,只是文件大小的原因以及數據庫存儲讀取速度性能限制,我們基本上還是不建議將文件存儲至數據庫,畢竟硬盤讀取要快得多。
轉載于:https://www.cnblogs.com/leetheone/articles/880057.html
總結
- 上一篇: 求一个好听的英语女生名字。
- 下一篇: asp.NET自定义服务器控件内部细节系