从数据库下载文件,其中文件以二进制格式存储

时间:2013-06-14 09:18:23

标签: c# asp.net file download binary

从数据库下载文档时遇到问题。

目前我在ASP.net项目工作,这是我的第一个职业项目。 我们有一些文件存储在数据库中。文档(.pdf,.doc,.png,.docx,xl​​s,xlsx)以二进制格式存储,并指定其类型。

我可以使用Response.write下载一个文档。但现在我必须连接一些文档,然后允许用户点击按钮下载。

我搜索了很多。开发人员说这是不可能的。但我仍然认为这可以做到。

但是,如果这是不可能的,我认为我会先将这些单独的文档保存在某个服务器位置,然后压缩它们然后允许用户下载。但是,我如何能够在服务器位置以原始格式保存单个文档。

请帮帮我。我遇到了大问题。

1 个答案:

答案 0 :(得分:0)

在将zip文件显示到响应流之前,从数据库中读取多个文档并将其压缩是不可能的。您可以在此过程中执行此操作,无需将文档保存到服务器。

此代码使用Ionic.Zip压缩多个文件并将其写入MemoryStream

foreach (var file in files)
{
    zipFile.AddEntry(file.FileName, file.ContentBytes);  // these are the file bytes
}
var zipMs = new MemoryStream();
zipFile.Save(zipMs);
zipMs.Seek(0, SeekOrigin.Begin);
zipMs.Flush();

file.FileName包含文档的扩展名(.docx),当通过浏览器下载时,所有内容都会正确显示和保存。