我正在开发一个asp.net 3.5网站,我需要在主机上存储一些屏幕保护文件.scr
,我想知道是否有办法存储.scr
或.exe
sqlserver数据库中的文件并检索它们?任何有用的帮助。
答案 0 :(得分:3)
将它们存储为BLOB(二进制大对象)并存储文件流,该文件流基本上是一个字节数组。通常,文件存储在服务器上,数据库只保存文件路径和名称。您必须在SQL Server中为数据库中的BLOB数据类型腾出空间,以允许8000字节的图像: BLOBData varBinary(8000)
// Using DataTable as a mockup database.
System.Data.DataTable table = new System.Data.DataTable();
table.Columns.Add("file name");
table.Columns.Add("data");
// Read data from file.
byte[] stream = System.IO.File.ReadAllBytes("th.exe");
// Add the file to the db, don't know how you add data to your database.
table.Rows.Add("th.exe", stream);
// Create a filestream that will write data to disk (in a file).
System.IO.FileStream save = new System.IO.FileStream((string)table.Rows[0].ItemArray[0], System.IO.FileMode.Create);
// Retrieve the data from the database, don't know how you do this with your database.
byte[] data = (byte[])table.Rows[0].ItemArray[0];
// Write data to the file on disk.
save.Write(data, 0, data.Length);
答案 1 :(得分:2)
但是,您可以将其存储为BLOB,如果文件大小较大,性能可能会受到影响。
或者,您可以使用Filestream Storage,它实现为varbinary(max)列,其中数据作为BLOB存储在文件系统中。 BLOB的大小仅受文件系统的卷大小限制。 2 GB文件大小的标准varbinary(max)限制不适用于存储在文件系统中的BLOB。
有关详细信息,请查看msdn
http://msdn.microsoft.com/en-us/library/bb933993.aspx
欢呼声