动态创建一个Zip文件,并使其可在ASP.NET中下载

时间:2012-09-06 09:26:06

标签: asp.net zip on-the-fly

我有一个 ASP.NET Web Forms 应用程序。用户点击下载链接后,我需要动态创建多个 XML 文件 ,压缩它们并提示用户下载对话框。

我已经完成了下载单个XML文件的功能,它可以正常工作。 download.aspx 文件中的链接是:

<asp:HyperLink ID="hlDownload" Text="Download" NavigateUrl='<%# String.Format("GetFile.aspx?LicenseGuid={0}", Eval("ProductId")) %>' runat="server"></asp:HyperLink>

GetFile.aspx 代码中的函数:

Dim xmlFile = _productServices.GetXMLFilePerProductId(ProductId)
Dim xdoc As XmlDocument = New XmlDocument()
xdoc.LoadXml(xmlFile)

Response.Clear()
Response.ContentType = "text/xml"
Response.ContentEncoding = System.Text.Encoding.UTF8
Response.AddHeader("Content-Disposition", "attachment; filename=some_name.xml")

xdoc.Save(Response.Output)
Response.End()

如何动态创建ZIP文件并打包几个即时创建的XML文件?

PS:欢迎使用C#和VB.NET的答案

2 个答案:

答案 0 :(得分:2)

您可以使用CodeFluent实体运行时客户端程序包的ZipFile类: Link here

此库仅允许使用流,这意味着您没有在文件系统上创建临时文件。

答案 1 :(得分:2)

如果您愿意,可以使用.net GZip或Deflate流,并可以开发自己的解决方案或更好的选择是使用SharpZip .net Library,这是托管代码。