如何使用ASP.NET创建XML文件并提示下载?

时间:2010-07-12 18:57:23

标签: asp.net

我目前正在尝试将数据(客户端计算机)写入用户可以保存的xml文件中。但是,我希望用户能够决定他们想要保存这个写入的xml文件的位置。是否有任何控件或代码可供用户保存文件?

更新

是正确的方法吗?

**HttpContext.Current.Response.Write(xw.ToStroing()); <<< ??????**
HttpContext.Current.Response.End(); 

更新:

XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;
            MemoryStream ms = new MemoryStream();

HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.ContentType = "text/xml";
            HttpContext.Current.Response.AddHeader("Content-Disposition:", "attachment;filename=" + HttpUtility.UrlEncode(fileName));        

            using (StringWriter sw = new StringWriter())
            {
                using (XmlWriter xw = XmlWriter.Create(ms, settings))

                {
                    xw.WriteStartDocument();

                    xw.WriteStartElement("Name");
                    xw.WriteStartElement("Application");
                     ................
                    ......................
                    HttpContext.Current.Response.Write(xw.ToStroing());
                      HttpContext.Current.Response.End(); 

4 个答案:

答案 0 :(得分:1)

当您开始下载文件时,客户端的浏览器将处理文件保存位置。

如果要强制下载文件而不是打开文件,请将此HTTP标头添加到您的响应中:

Content-Disposition: attachment; filename="myFile.xml"

答案 1 :(得分:1)

这里是link帮助我:)

答案 2 :(得分:0)

MemoryStream在哪里使用?您应该将StringWriter传递给XmlTextWriter构造函数,然后Response.Write() StringWriter

的内容

答案 3 :(得分:0)

在Response.AddHeader行之后添加:

Response.ContentType = "application/octet-stream";

这将强制下载文件,无论文件类型如何。