0

我正在开发一个 asp.net 3.5 网站,我需要.scr在主机上存储一些屏幕保护程序文件,我想知道是否有办法将文件存储.scr.exesqlserver 数据库中并检索它们?任何帮助都应该受到重视。

4

2 回答 2

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);
于 2012-09-27T07:35:37.140 回答
2

虽然,您可以将其存储为 BLOB,但如果文件大小较大,则性能可能会成为问题。

或者,您可以使用作为 varbinary(max) 列实现的 Filestream Storage,其中数据作为 BLOB 存储在文件系统中。BLOB 的大小仅受文件系统卷大小的限制。2 GB 文件大小的标准 varbinary(max) 限制不适用于存储在文件系统中的 BLOB。

更多详情请查看msdn

http://msdn.microsoft.com/en-us/library/bb933993.aspx

干杯

于 2012-09-27T08:20:37.403 回答