如何从VARBINARY(MAX)WPF

问题描述:

转换成视频或音频格式,在C#中,我使用的Visual Studio 2010,并使用LINQ to SQL的双方视频或音频上传到数据类型VARBINARY(最大值)的数据库。我现在需要检索这些文件并显示在xaml屏幕上。谁能帮忙?这是我如何从数据库中检索它现在为止,我把它添加到一个byte []数组..(假设这是你做了什么?)从s在context.Stimulis 其中s.stimID如何从VARBINARY(MAX)WPF

VAR fileValue = == 1 select s.stimFile;

byte [] file = fileValue.Single()。ToArray();

我读过使用File.WriteAllBytes()或者类似的东西,但我不知道这是什么,我需要做的。 谢谢艾玛。

通常,在数据库中存储大图像或视频并不是一种好的做法。将它们组织在磁盘中的结构化文件夹中并将数据存储到文件的路径中会好得多。

如果你真的需要将它们存储在数据库中,你的问题取决于文件格式和使用的API。如果需要从磁盘中读取它们,你的做法是正确的:

File.WriteAllBytes (strng path, byte[] bytes) 

那么你就可以访问该文件与您正在使用的API的加载它。

我仍然建议将大文件存储在数据库之外。

编辑:我觉得我走的太远说它不是将它们存储在数据库中的一个很好的做法:)。但我仍然认为将它们放在数据库之外非常有用。

第二编辑:从您的转换任何媒体,以一种文件类型的评论......这是不可能的。您可以在不同的音频类型之间进行转换,也可以在不同的图像类型之间转换,但不能将任何媒体类型转换为单一文件类型我认为你的问题更关注于从数据库存储和检索blob,因此我的答案。

图像可以在XAML中查看,但音频和视频是另一回事...... 我会通过查看到嵌入Windows媒体播放器到你的应用程序启动: Windows Media Player SDK 这样你就可以复制任何WMP可以播放:)

+0

您好,感谢您的回复,当你说了其更好它们保存在磁盘和刚刚保存的路径,数据库文件,请ü意味着,盘在客户端机器?或者将它们保存在程序中?文件格式可能会有一些不同的视频/音频类型,我可以将它们保存为数据库中的二进制文件,并希望我可以将它们全部转换回只有一种类型的文件(如果可能的话)。例如当他们想要在屏幕上查看它们时,它们都是mpeg。 – 2011-04-13 20:15:02

+0

@Emma Mack - 您可以将文件存储在DB所在的同一磁盘中,或者存储在同一台计算机上的另一个驱动器中。你可以根据自己的需要在文件夹中整理它们(例如,每种类型,每天或每月有子文件夹,......适合你最好的应用程序)。然后,只需在数据库中存储要显示给用户的信息(例如名称,创建日期,起源,任何...以及文件的路径)。操纵图像,视频等的系统用于以这种方式工作。 – Haplo 2011-04-13 20:43:42

+0

@Emma Mack - 我编辑了我的答案,添加了更多信息。希望能帮助到你! – Haplo 2011-04-13 20:55:26