2009-07-13 25 views
5

OK. Tôi chắc rằng nó tải xuống các tệp XML có phần mở rộng .xml, nhưng tôi tự hỏi những gì còn thiếu trong đoạn mã ở đây khiến cho extenstion .xml bị thiếu trong tệp đã tải xuống.Tại sao FireFox không bao gồm phần mở rộng .xml khi tải xuống tệp?

Lưu ý: Đây làm việc trong IE 6 + (không thử các trình duyệt dựa trên WebKit hoặc Opera)

private void GenerateXmlAttachment(string xmlInStringFormat, string fileName) 
    { 
    // Where fileName = "someFile.xml" 
     HttpResponse response = HttpContext.Current.Response; 
     response.Clear(); 
     response.Charset = string.Empty; 
     response.ContentEncoding = Encoding.Default; 

    response.AddHeader("Content-Disposition", "attachment;filename=" + fileName); 
     response.AddHeader("Content-Length", xmlInStringFormat.Length.ToString()); 
    response.ContentType = "text/xml";   

    response.Write(xmlInStringFormat); 
     response.Flush(); 
     response.End(); 

    } 

Ý tưởng bất cứ ai?

+1

Can có HOÀN TOÀN BẢO LÃNH filename có .xml ở cuối dòng? – cjk

+1

100% TUYỆT ĐỐI BẢO MẬT. Chỉ cần kiểm tra lại vì bạn đã khiến tôi nghi ngờ điều đó;) – nickytonline

+0

Đây là tiêu đề phản hồi của tiêu đề HTTP trực tiếp: HTTP/1.x 200 OK Máy chủ: Microsoft-IIS/5.1 Ngày: Thứ hai, ngày 13 tháng 7 năm 2009 17:05 : 14 GMT X-Powered-By: ASP.NET X-AspNet-Phiên bản: 2.0.50727 Nội dung-Bố trí: tệp đính kèm; filename = test.xml Nội dung dài: 2040 Bộ nhớ cache-Điều khiển: riêng Nội dung- Loại: text/xml – nickytonline

Trả lời

7

Hãy thử thay đổi:

Response.AddHeader ("Content-Disposition", "tập tin đính kèm; filename =" + fileName);

Để:

Response.AddHeader ("Content-Disposition", "tập tin đính kèm; filename =" + HttpUtility.UrlEncode (fileName));

Mã hoạt động cho tất cả các trình duyệt (bao gồm cả Firefox mà chúng tôi sử dụng nhiều).

+0

@Jose. Đúng rồi, thế đó. Tôi đã tìm thấy khoảng 30 phút trước trên bài đăng này, http://www.webmaster-talk.com/asp-forum/35962-content-disposition-does-nto-work-firefox.html. Cảm ơn vì đăng. – nickytonline

6

Giải quyết các vấn đề về không gian firefox. Bao quanh tên tệp của bạn bằng dấu ngoặc kép.

Thay đổi mã dưới đây

response.AddHeader("Content-Disposition", "attachment;filename=" + fileName); 

để

response.AddHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\""); 
Các vấn đề liên quan