[英]How to store image to database C# / how to convert Byte[] to varbinary(max) C#
[英]How to search a MSSQL database for byte[]/varbinary using C# and MVC3
對於最近的MVC3項目,我最終將文件存儲在MSSQL數據庫中作為byte[]
(MVC3將其轉換為varbinary(max)列)。
文件提交到數據庫后,它們永遠不會改變。
現在我試圖變得非常聰明並且避免多次存儲相同的文件,即使用戶一遍又一遍地添加相同的文件。
我避免這種情況的第一個想法是創建一個where查詢來嘗試查找我正在嘗試添加的byte[]
是否存在匹配。 然而,我擔心這個問題太重了,因為文件大小可能在100Mb左右,並且可能有多個人同時添加它們。
為了更加聰明,我可以使用有關該文件的一些信息來縮小搜索范圍。 我目前在模型中有以下相關列。
public byte[] FileData { get; set; }
public String MimeType { get; set; }
public double FileSizeMb { get; set; }
我可以搜索是否有任何文件具有相同的mime類型和文件大小,以及可能添加byte[]
的哈希值,看看我是否可以在嘗試匹配byte[]
之前獲得匹配。 這樣我只是比較當我有一個正確類型和正確類型的正確大小的文件,這應該是較輕的..
有沒有更好的選擇來實現這一目標? 我怎樣才能最好地解決這個問題?
如果它有任何區別我正在使用mssql 2012。
我認為以字節存儲原始長度和由c#計算的哈希就足夠了。
您應該計算FileData
哈希值(當然是在Web服務器端),並使用哈希和文件大小進行搜索。 如果您有匹配項,則應將FileData
下載到Web服務器並進行比較(不是相反)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.