C# 如何在不写入服务器文件系统的情况下向响应中添加多个文件?
我当前正在发送一个XML文件作为响应,而没有写入我的服务器文件系统,如下所示: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
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文件中,如下所示: