2008-10-28 67 views
3

我有一個允許用戶將文件附加到SQL Server 2005數據庫的.Net應用程序。我想限制文件大小爲10MB,所以從我可以告訴的是,我必須聲明數據類型varbinary(max),因爲我實際可以指定的最大大小是8000字節。但〜2GB文件大小varbinary(max)允許看起來像矯枉過正。有沒有辦法讓我把它限制在10MB的數據庫中,還是隻需要檢查他們是不是試圖在前端添加更大的東西。將SQL Server 2005數據庫的文件附件限制爲值> 8000字節

回答

0

我認爲你需要在前端製作它。你可以像在web.config限制HTTP請求大小:

</configuration> 
    </system.web> 
     <httpRuntime maxRequestLength="60000"/> 
    </system.web> 
</configuration> 

您可能還需要明確檢查公佈的文件大小,當用戶嘗試上傳文件超過指定的閾值。

0

在ASP.NET中,您已經對上傳大小(默認值:4MB IIRC)有限制。你可以使用它來限制你的下載。

海事組織它會更好,因爲它的數據庫路徑越早,所以你最大限度地減少服務器上的過載。

唯一的缺點是,如果用戶嘗試上傳大於ASP.NET限制的文件,用戶將看到一個錯誤頁面。

0

啊 - 我的錯。這是一個VB.Net桌面應用程序。我忘了提到這一點。但我可以想象,必須在前端處理它的建議仍然成立。

感謝

0

我會檢查你的應用程序文件的限制,你不想去通過將其插入到數據庫的過程中,只是爲了找出它是太大了。

一個小小的應用程序邏輯可以節省時間,並提供更好的用戶體驗。

2

使用varbinary(max)完全沒問題,因爲它是varbinary,所以只能使用內容需要的地方,最多2個演出。但是,您可以在數據庫中添加CHECK CONSTRAINT,檢查上傳的數據長度()。我寧願只檢查應用程序中的上傳。

+0

你能想到一個不做應用程序和數據庫端檢查的理由嗎? – Solracnapod 2008-10-29 03:03:39

2

稍微偏離主題: 雖然這當然是可能的,但我發現將附件直接存儲在數據庫中通常是一個壞主意。

主要問題是由於大附件導致整個數據庫大小的爆炸性增長,這使得備份和其他日常維護變得更加困難。

簡單地將文件的路徑信息存儲在數據庫中,並將實際文件存儲在共享網絡文件夾中是我推薦考慮的一種選擇。 (當然,這意味着你現在不得不擔心網絡文件許可和其他一些問題,但在許多情況下仍然是更好的選擇)。

0

看起來這將是限制附件的最佳做法大小在前端和數據庫中。 Kaboing的檢查約束解決方案似乎適合事物的數據庫方面。

相關問題