如何下载使用 StreamWriter 编写的 xml 文件作为 xml 文件

问题描述 投票:0回答:1

我有一个用 C# 编写的 XML 文件,使用

StreamWriter
和以下代码:

String filename = Session.SessionID + ".xml";
String filepath = "h:\\root\\home\\mchinni-001\\www\\site1\\OUTFolder\\" + filename;
StreamWriter sw = new StreamWriter(filepath, false);

我用 XML 文件的格式化内容填充

strOut
,然后执行以下操作:

sw.WriteLine(strOut);
sw.Close();

当我检查网络服务器上的文件时,它看起来很完美(对于我的目的而言)。

然后我尝试使用以下命令下载它:

Response.ContentType = "application/xml";
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
Response.TransmitFile(filepath);
Response.End();

该下载有时有效,但大多数时候,我在下载区域收到“丢失文件”通知,并且根本没有下载任何文件(甚至不是 0 长度的文件)。

如何下载此文件?

我已经阅读了一些有关用 C# 编写 XML 文件的“正确”方法的内容,但我的代码已经生成了(出于我的目的)格式正确的 XML 文件,并且我宁愿不必进行主要/大规模重写,如果我可以避免它。

顺便说一句,我也尝试过:

Response.ContentType = "text/xml";

Response.ContentType = "text/plain";

但他们都没有工作过。

c# xml streamwriter
1个回答
0
投票

关闭之前请务必先

flush
StreamWriter
。这可确保在尝试传输之前所有数据都已写入文件。

包括

Response.BufferOutput = true;
,它允许服务器在将输出发送到客户端之前缓冲输出,这可以在文件下载的上下文中提供帮助。

String filename = Session.SessionID + ".xml";
String filepath = "h:\\root\\home\\mchinni-001\\www\\site1\\OUTFolder\\" + filename;
StreamWriter sw = new StreamWriter(filepath, false);

sw.WriteLine(strOut);
sw.Flush();
sw.Close();

Response.BufferOutput = true;
if (File.Exists(filepath))
{
    Response.ContentType = "application/xml";
    Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");

    Response.TransmitFile(filepath);
    Response.End();
}
else
{
    Response.Write("File not found.");
}
© www.soinside.com 2019 - 2024. All rights reserved.