asp.net
  • zip
  • on-the-fly
  • 2012-09-06 32 views 0 likes 
    0

    我有一个ASP.NET Web窗体应用程序。一旦用户点击下载链接,我需要创建若干XML文件动态,将其压缩并通过下载对话框提示用户。动态创建一个Zip文件,并使其可在ASP.NET中下载

    我已经做了下载一个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欢迎

    +0

    我们不给这里的codez - 你已经足够长的时间知道这一点。请解释[您尝试过的](http://whathaveyoutried.com)以及您卡在哪里。 – Oded

    +0

    对不起,我知道SO政策,我不想要代码,只是为了实现该功能,我必须遵循的过程的概述。目前,我能够创建一个ZIP文件,从创建并保存在HD中的文件开始。 – CiccioMiami

    回答

    2

    您可以使用zip文件类CodeFluent实体运行客户端软件包的: Link here

    这个库允许使用流而已,意义您没有在文件系统上创建临时文件。

    +1

    大多数zip库在流上工作。包括FCL/BCL中的那些。 – Oded

    +0

    是的,希望。那只是一个例子。 – Bgi

    2

    如果你喜欢,你可以去.net GZip或Deflate流,并可以开发你自己的解决方案或更好的选择是使用SharpZip .net Library,它已经管理代码。

    +0

    谢谢!你为什么认为SharpZip是一个更好的图书馆? – CiccioMiami

    +0

    @CiccioMiami,它的开源,经过充分测试,并提供一个快速的API来实现你的愿望。 –

    +0

    SharpZipLib速度较慢“对于CPU性能和内存使用的原因,与其他流行的.NET zip实现(http://www.icsharpcode.net/opensource/sharpziplib/或http://dotnetzip.codeplex.com/)相反, ,CodeFluent实体的ZipFile实现不受管理。“ – Bgi

    相关问题