ASP.NET MVC應用程序的UploadFiles目錄,是存放用戶上傳的文件,當然包括圖片。現在開發的要求是,顯示所有用戶上傳圖片作為列表,呈現給用戶。
如果直接去顯示,也許某些文件不是圖片文件。還有可能是用戶上傳時,更改了擴展名。真實不是圖片的,改為了圖片相關的擴展名。即是說,現在要做的是過濾出真正的圖片文件出來。
在應用程序的Utilities目錄中,創建一個ImageUtility的類別:
有兩個函數,第一個public static string Base64String(string virtualPath):
有一個參數,需要傳入虛擬路徑。
#13使用Server.MapPath()把虛擬路徑處理為物理路徑。
#14讀取文件流(FileStream)
#15把文件流處理為byte陣列。
#17轉換為Convert.ToBase64String()字符串。
第二個函數public static bool IsImage(string base64String):
#22把參數傳入的Base64String字符串,轉換為byte陣列。
#24行,把byte[]轉換為內存流(MemoryStream)
#28行是核心判斷是否圖片代碼。
兩個函數,一經每行解讀,可以整合為一個函數:
整合後的函數,名改為IsImage1(),此函數可算是優化,少了兩次byte陣列轉換。