将视频流保存到数据库的表中
对于存储BLOB(如视频数据),您可以在实体框架支持的SQL Server 2005中使用varbinary(MAX)
数据类型。
请记住,每当您加载包含此列的实体时,EF会尝试将您的完整视频完全加载到内存中,EF中没有字节流模式 - 这意味着这不仅不能很好地扩展,而且会影响多个用户由于记忆要求也变得不可行,并且表现不佳。不要这样做 - 我会努力寻找更好的替代品。
+1谢谢,你建议我做什么? – saber
@ s.amani:基本上没有太多可以做的事情,因为这是一个桌面应用程序 - 无论您是否喜欢,用户已经可以访问您的视频。您唯一能做的就是让它变得更难,即您可以加密视频并在您将视频标题存储在单独位置时将其解密,并在运行时将其与视频的其余部分结合使用。根据视频文件格式的不同,这可能也可能不可行。 – BrokenGlass
你提出了一个奇妙的提示,分离它的数据是一个好主意。 – saber
我们可以假设一个视频基本上是一个文件,您可以使用SQL 2008数据类型FILESTREAM
。
应该有大量的例子的时候,我发现这一点:
感谢您的回复,但我正在使用SQL-Server 2005. – saber
Download and Upload images from SQL Server via ASP.Net MVC。本文展示了如何为大型BLOB使用流语义(避免在内存中创建字节[]),并且您也可以在C#表单中使用实现,对于一般的ASP MVC或web来说,并不是特定的。
谢谢Remus,这很有用。 – saber
您希望将视频本身保存在数据库中的任何特定原因,而不仅仅是指向它的指针(如文件名)? – BrokenGlass
这不是一个网络应用程序,原因是我不希望用户可以直接访问文件。这就是为什么我想将它们存储在数据库中。 – saber
那么,有什么建议吗? – saber