我有兩個相同的圖像。一個保存爲文件夾中的.png,另一個保存爲數據庫中的SQLite blob。我試圖找出一個很好的方法來堅持這些圖像,並在需要時在我看來顯示它們。ASP MVC從SQLite db與文件系統獲取圖像
我有兩種嘗試將這些圖像放入我的視圖的方法。第一個是直接從文件系統讀取圖像文件,將它們轉換爲base64字符串,然後將其拖入ViewBag。此方法工作正常。
另一種方法是嘗試直接從數據庫加載圖像blob,然後從視圖中的模型中獲取圖像。這不太好。
通過幾個斷點,我發現base64字符串之間存在巨大差異,這取決於我的方法。我不確定SQLite圖像blob和我的文件系統中的.png之間的區別是什麼和什麼,以及任何幫助,將不勝感激,因爲將圖像保存在文件夾中看起來像額外的工作,當我可以把它們留在我的數據庫。從文件系統
加載:從SQLite的分貝
public string FirstImagePath(string slideid, int well)
{
var firstPath = HttpContext.Current.Server.MapPath(slideid);
byte[] firstImageByteData = File.ReadAllBytes(firstPath + "_first" + well + ".png");
string firstImageBase64Data = Convert.ToBase64String(firstImageByteData);
string firstImageDataUrl = string.Format("data:image/png;base64,{0}", firstImageBase64Data);
return firstImageDataUrl;
}
加載:
public byte[] FirstImage { get; set; }
public string FirstBase64Image
{
get { return ConvertImage(FirstImage);}
}
public string ConvertImage(byte[] imageBytes)
{
byte[] imageArray = imageBytes;
string imageBase64String = Convert.ToBase64String(imageBytes);
string imageDataString = string.Format("data:image/png;base64,{0}", imageBase64String);
return imageDataString;
}
不要將圖像存儲在數據庫中。他們不屬於那裏。將圖像存儲在磁盤上或雲存儲位置中。在數據庫中存儲一個URI。 – Necoras