【发布时间】:2018-06-19 14:05:36
【问题描述】:
我有一个显示 XML 信息的 asp 文本框。它看起来像一个 XML 文件。我需要能够允许用户下载从文本框内容创建的文件。我正在使用以下 C# 代码。
protected void btnDownload_Click(object sender, EventArgs e)
{
var fileInBytes = Encoding.UTF8.GetBytes(tXML.Text);
using (var stream = new MemoryStream(fileInBytes))
{
long dataLengthToRead = stream.Length;
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.BufferOutput = true;
Response.ContentType = "text/xml"; /// if it is text or xml
Response.AddHeader("Content-Disposition", "attachment; filename=" + "yourfilename.xml");
Response.AddHeader("Content-Length", dataLengthToRead.ToString());
stream.WriteTo(Response.OutputStream);
Response.Flush();
Response.Close();
}
Response.End();
}
当我尝试使用 Chrome 下载它时,我收到失败 - 网络错误。当我尝试用 IE 下载它时,它会下载,但是当我查看内容时,所有的“”都会从中删除。我知道下载某些文件类型可能是安全问题,但是 XML 文件?有没有更好的方法来做到这一点?
【问题讨论】:
-
Xml 只是文本,因此您可以使用 StreamWriter() 保存。
-
我实际上并不想在 Web 服务器上创建文件。我希望用户能够从 .aspx 页面下载文件。 xml 包含敏感数据,我不能将它们留在文件夹中。
-
您是在设计服务器代码还是网页?网页在用户 PC 上运行,无需下载。只是需要保存。
-
这是服务器代码。我希望 xml 被下载而不是保存。