C# 如何在不写入服务器文件系统的情况下向响应中添加多个文件?

C# 如何在不写入服务器文件系统的情况下向响应中添加多个文件?,c#,asp.net-mvc,http-headers,C#,Asp.net Mvc,Http Headers,我当前正在发送一个XML文件作为响应,而没有写入我的服务器文件系统,如下所示: string xml = "my xml string" string filename = "myFileName" Response.Clear(); Response.ContentType = "text/xml"; Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xml", filename

我当前正在发送一个XML文件作为响应,而没有写入我的服务器文件系统,如下所示:

string xml = "my xml string"
string filename = "myFileName"

Response.Clear();
Response.ContentType = "text/xml";
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xml", filename));
Response.Write(xml);
Response.End();

然而,我现在需要返回多个XML文件,我知道我可能需要返回一个zip文件,因为返回多个文件是不可能的。是否可以将xml文件写入zip文件而不将其保存到我的服务器文件系统?如果没有,我可以发送多个响应吗?

这里有一个可能的方法。抱歉,忘记发布指向所需库的链接。我相信它是DotNetZip包的一部分,可以通过Nuget获得

Response.ContentType = "application/zip";
Response.AppendHeader("content-disposition", "attachment; filename=\"Download.zip\"");
using (ZipOutputStream zOut = new ZipOutputStream(HttpContext.Current.Response.OutputStream))
{
    FileInfo f1 = new FileInfo(fileName1);
    zOut.PutNextEntry(f1.Name);
    using (var input = f1.OpenRead())
    {
        byte[] buffer = new byte[2048];
        int n;
        while ((n = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            zOut.Write(buffer, 0, n);
        }
    }
}

每个响应只能返回一个文件。但是,您可以将它们打包到.zip文件中,如下所示: