[英]Saving image to the database
我有一些簡單的實體,現在需要具有個人資料圖片。 正確的方法是什么? 因此,它是一對一的關系,一個圖像僅與一個實體相關,反之亦然。 該圖像應通過網絡表單以及插入相關實體一起上傳。
如果有人能指出正確的方向,那么如何將圖像持久保存到數據庫和相關實體將是很棒的。
只是一個側面的評論: 我認為將圖像存儲在db中不是一個好主意 。
通常,將圖像存儲在db中不是一個好主意,因為dbs旨在存儲文本而不是大的二進制塊。 更好地存儲圖像路徑並在文件夾中包含圖像。 如果要確定ID為實體ID(1323.jpg)的一對一關系名稱圖像。
如果要使用圖像路徑,則應遵循一些准則(一般來說,防御性地使用代碼):
但我認為出於某種原因您應該這樣做。 因此,為了實現您想要的:
數據庫設計
C#代碼
用戶字節數組來存儲它
檢查此鏈接以獲取代碼示例: http : //www.codeproject.com/Articles/21208/Store-or-Save-images-in-SQL-Server
代碼很簡單,但是為什么要使用數據庫呢? 如果這是一個網站,為什么不將其保存到磁盤上可以輕松引用的位置?
優化數據庫以存儲已知大小和相對較小的數據。 您的映像很可能會超過8KB的長度(將其稱為MAX數據類型)。 圖像將與“配置文件”存儲在單獨的行/頁面上。
我個人將圖像保存在一個已知的文件夾中,並使用ID作為圖像名稱。 對於沒有圖像並使用標准gif或類似圖片的配置文件,可以通過將配置文件ID的simlinks / hardlinks設置為通用gif來使其簡單/修整。
public class Profile
{
public int Id {get;}
public string Name {get; private set;}
public Image Picture {get; private set;}
public void Save()
{
using (var connection = new SqlConnection("myconnectionstring"))
using (var command = new SqlCommand("", connection))
{
command.CommandText =
"UPDATE dbo.TblProfile " +
"SET " +
"Name = @name, " +
"Picture = @picture " +
"WHERE ID = @id";
command.Parameters.AddWithValue("@name", Name);
command.Parameters.AddWithValue("@picture", Picture);
command.Parameters.AddWithValue("@id", Id);
command.ExecuteNonQuery();
}
}
}
我認為以下鏈接可以為您提供解決方案,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.