2010-07-12 2 views
5

В настоящее время я пытаюсь записать данные (клиентский компьютер) в файл xml, где пользователь может сохранить. Тем не менее, я хочу, чтобы пользователи могли решить, где они хотят сохранить этот письменный XML-файл. Есть ли какие-либо элементы управления или коды, которые я могу использовать, чтобы позволить пользователям сохранять файл ?.Как создать XML-файл с ASP.NET и попросить его загрузить?

Обновление:

- это правильный способ сделать?

**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

Когда вы начинаете загрузку файла, браузер клиента будет обрабатывать файл место сохранения.

Если вы хотите, чтобы файл для загрузки, а не открытым, добавить заголовок HTTP к ответу:

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

я использую и я есть обновить свой вопрос, пожалуйста, см и до сих пор не работают –

+1

попробуйте вместо этого: 'используя (XmlWriter XW = XmlWriter.Create (Response.OutputStream))' , а затем не делать ' HttpContext.Current.Response.Write() ' –

+0

также не уверен, заметили ли вы, что xw.ToStroing()' с ошибкой –

0

Где MemoryStream используется ? Вы должны пройти StringWriter в XmlTextWriter конструктор затем Response.Write() содержимое StringWriter

0

Добавьте это после Response.AddHeader линии:

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

Это заставит загрузку файлов, независимо от типа файла.

Смежные вопросы