【问题标题】:Downloading file from database where file is stored in binary format从以二进制格式存储文件的数据库下载文件
【发布时间】:2013-06-10 21:42:30
【问题描述】:

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

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

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

我用谷歌搜索了很多。开发人员说这是不可能的。不过我觉得还是可以的。

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

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

【问题讨论】:

  • 压缩文件似乎是要走的路。您可以从数据库中检索文档,将它们转换为文档类型(您已在数据库中指定)并将它们添加到 ZIP 文件中。根据文件的大小,您可以在内存中执行此操作并将 ZIP 文件提供给用户。否则,您可以将文档写入磁盘(在您的服务器上),然后创建一个 ZIP 文件。创建 ZIP 文件后,您可以删除文件,下载后删除 ZIP 文件。

标签: c# asp.net file download binary


【解决方案1】:

在将 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),通过浏览器下载时,所有内容均正确显示和保存。

【讨论】:

  • 非常感谢......Stefan 和 Davin....我会在半小时内试一试,然后告诉你结果
猜你喜欢
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
  • 2014-11-11
相关资源
最近更新 更多