2010-07-12 38 views
5

Tôi hiện đang cố gắng ghi dữ liệu (máy khách) vào tệp xml nơi người dùng có thể lưu. Tuy nhiên, tôi muốn người dùng có thể quyết định nơi họ muốn lưu tệp xml được viết này. Có bất kỳ điều khiển hoặc mã nào tôi có thể sử dụng để cho phép người dùng lưu tệp không ?.Làm thế nào để tạo một tệp XML với ASP.NET và yêu cầu tải xuống?

Cập nhật:

là cách phù hợp để làm?

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

update:

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(); 

Trả lời

1

đây là link giúp tôi :)

1

Khi bạn bắt đầu tải xuống tập tin, trình duyệt của khách hàng sẽ xử lý tiết kiệm vị trí tập tin.

Nếu bạn muốn để buộc các tập tin để tải về thay vì mở, thêm tiêu đề HTTP này để trả lời của bạn:

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

tôi đang sử dụng và tôi đã cập nhật câu hỏi của mình, vui lòng xem và vẫn không hoạt động –

+1

thử thay vào đó: 'using (XmlWriter xw = XmlWriter.Create (Response.OutputStream))' và sau đó không thực hiện ' HttpContext.Current.Response.Write() ' –

+0

cũng, không chắc chắn nếu bạn nhận thấy' xw.ToStroing() 'là sai chính tả –

0

đâu là MemoryStream đang được sử dụng ? Bạn nên vượt qua StringWriter để các nhà xây dựng XmlTextWriter sau đó Response.Write() các nội dung của StringWriter

0

Thêm này sau khi dòng Response.AddHeader:

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

Điều này sẽ buộc tải về các tập tin, bất kể loại tệp.

Các vấn đề liên quan