我正在使用Visual Studio 2010,并使用LINq to SQL将数据类型Varbinary(max)上的视频或音频上传到数据库。我现在需要检索这些文件并在xaml屏幕上显示。有人可以帮忙吗?这是我如何从数据库中检索它,到目前为止我将它添加到byte []数组..(假设这是你做的??)
var fileValue =来自context.Stimulis中的s 其中s.stimID == 1 选择s.stimFile;
byte [] file = fileValue.Single()。ToArray();
我已经阅读过使用File.WriteAllBytes()或类似的东西,但我不知道这是否是我需要做的。 谢谢艾玛。
答案 0 :(得分:0)
通常,将大图像或视频存储在数据库中并不是一种好的做法。最好将它们组织在磁盘中的结构化文件夹中,并在数据库中存储文件的路径。
如果您确实需要将它们存储在数据库中,那么您的问题取决于文件格式和您使用的API。如果您需要从磁盘读取它们,您的方法是正确的:
File.WriteAllBytes (strng path, byte[] bytes)
然后您可以访问该文件以使用您正在使用的API加载它。
我仍然建议将大文件存储在数据库之外。
编辑:我认为我太过分了,将它们存储在数据库中并不是一个好习惯:)。但我仍然认为将它们放在数据库之外是有用的。第二次编辑:从您将任何媒体转换为一种文件类型的评论......这是不可能的。您可以在不同的音频类型之间或不同的图像类型之间进行转换,但不能将任何媒体类型转换为单个文件类型。我认为你的问题更侧重于存储和检索数据库中的blob,因此我的回答。
图像可以在XAML中查看,但音频和视频是另一回事...... 首先,我将介绍如何将Windows Media Player嵌入到您的应用程序中: Windows Media Player SDK 所以你可以复制WMP可以播放的任何内容:)