我有幾個應用程序允許用戶上傳存儲在數據庫表內的附件。由於它最初只適用於小圖片文件,因此它可以很好地工作幾年,但現在他們想要上傳非常大的文件(大約80MB)。這導致服務器內存不足(上傳失敗),因爲爲了將二進制數據寫入數據庫,我將整個內容加載到一個字節數組中。許多(如果不是大多數)在線文件上傳示例使用此方法(請參閱http://www.aspnettutorials.com/tutorials/database/Save-Img-ToDB-Csharp.aspx作爲示例)。將上傳的文件直接傳輸到數據庫表中
現在,問題是,我可以以某種方式將二進制內容流式傳輸到數據庫,而不是將整個內容加載到字節數組中,然後將字節數組設置爲參數化值?切換到基於文件而不是基於數據庫的存儲將在這一點上是一個大問題...
本身有些數據庫支持流(Oracle流的實例),這將允許您通過到RDBMS流的數據,而不會發出多個更新。 – Storm
將文件流式傳輸到數據庫並不像通過瀏覽器上傳大文件的可靠性那麼重要。如果您的耐心用戶在上傳時不會意外關閉瀏覽器,那麼這可能不是什麼大問題。 –