从sql数据库存储和显示文件

时间:2010-01-30 10:40:34

标签: asp.net

如何将文件(pdf和word文件)存储到sql数据库中,以及如何在用户单击时从sql数据库中选择“保存”,“打开”显示该文件。我正在使用c#+ asp.net web应用程序进行项目

4 个答案:

答案 0 :(得分:1)

你需要在这里做几件事:

1)创建允许用户上传文件的UI页面。

此页面将有一个FileUpload控件来检查所需的扩展名

2)编写代码以将这些文件保存到数据库

文件可以存储为二进制blob。由您和您的应用程序决定数据库的架构。您也可以选择其中一种ORM工具,以便从代码中访问数据库,参见

你有很多选择,选择看起来最自然/最容易的东西。

3)为用户创建用户界面以选择现有文件

这将使用您的ORM数据层回读文件列表并显示某些按钮/链接供用户选择和下载

4)一旦用户选择文件并返回文件,就从数据库中检索文件

阅读此MSDN关于returning binary files

的文章

此外,稍微谷歌,你可能会发现许多现有的解决方案与DNN等框架。

答案 1 :(得分:0)

要存储文件,您应该从SQL Server 2008中查看文件流:http://msdn.microsoft.com/en-us/library/cc716724.aspx

其他传统平台具有类似支持(使用二进制或图像数据类型)。

另一种方法是您可以将文件存储在共享文件系统中,并且只将该文件的路径存储在SQL表中。

答案 2 :(得分:0)

最常见的方法是在数据库中有两列用于存储propley的文件。 1列保存带有扩展名的文件名(例如:file1.txt),第2列保留数据类型binary。 在应用程序级别。方法获取上载的文件名并将其转换为字节数组。那么这个数组存储在二进制字段的sql中。文件名存储在第1个字段中。 要读回文件,另一种方法是从sql读取二进制字段并将其转换回FileStream,然后用原始文件名(扩展名)保存。

答案 3 :(得分:0)

使用fileUploaded上传文件。

将文件读入字节数组:

byte[] data = System.File.ReadAllByte(File Path);

将byte []转换为十六进制并将其存储在SQL

中的nvarchhar数据字段中
stringBuilder sb = new StringBuilder()
foreach(byte b in data)
{
    sb.Append(b.ToString("X");
}

当您需要显示它时,将其转换回byte []并从中创建一个文件,然后让用户从那里打开/保存它。