2010-07-12 77 views
5

我正在尝试将数据(客户机)写入用户可以保存的xml文件中。但是,我希望用户能够决定他们想要保存这个写入的XML文件的位置。有没有我可以用来允许用户保存文件的控件或代码?如何使用ASP.NET创建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(); 

回答

1

这里是link帮助我:)

1

当你开始一个文件下载,客户端的浏览器将处理该文件保存位置。

如果要强制要下载的文件,而不是开放的,这个HTTP标头添加到您的回应:

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

我使用,我有更新我的问题,请参见仍然不工作 – 2010-07-12 19:33:38

+1

试试这个: '使用(XmlWriter的XW = XmlWriter.Create(Response.OutputStream))' 然后不要做了' HttpContext.Current.Response.Write()' – 2010-07-14 18:50:09

+0

也,不知道你是否注意到'xw.ToStroing()'拼写错误 – 2010-07-14 18:51:12

0

凡正在使用的MemoryStream ?你应该通过StringWriterXmlTextWriter构造然后Response.Write()StringWriter

0

的内容Response.AddHeader线后补充一点:

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

这将迫使文件的下载,不管文件类型。