从数据库下载文档时遇到问题。
目前我在ASP.net项目工作,这是我的第一个职业项目。 我们有一些文件存储在数据库中。文档(.pdf,.doc,.png,.docx,xls,xlsx)以二进制格式存储,并指定其类型。
我可以使用Response.write下载一个文档。但现在我必须连接一些文档,然后允许用户点击按钮下载。
我搜索了很多。开发人员说这是不可能的。但我仍然认为这可以做到。
但是,如果这是不可能的,我认为我会先将这些单独的文档保存在某个服务器位置,然后压缩它们然后允许用户下载。但是,我如何能够在服务器位置以原始格式保存单个文档。
请帮帮我。我遇到了大问题。
答案 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),当通过浏览器下载时,所有内容都会正确显示和保存。