2009-07-13 15 views
5

OK. Jestem pewny, że pobiera on pliki XML z rozszerzeniem .xml, ale zastanawiam się, czego brakuje w tym kodzie, aby nie dopuścić do rozszerzenia języka .xml w pobranym pliku.Dlaczego program FireFox nie dołącza rozszerzenia .xml podczas pobierania pliku?

Uwaga: to działa w IE 6+ (nie spróbować przeglądarki WebKit oparte lub 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(); 

    } 

Pomysły ktoś?

+1

Can absolutnie GWARANCJA nazwa pliku .xml ma na końcu? – cjk

+1

100% ABSOLUTNIE GWARANTOWANA. Właśnie sprawdziłem ponownie, ponieważ sprawiłeś, że wątpię;) – nickytonline

+0

Oto nagłówki odpowiedzi dotyczące nagłówków HTTP na żywo: HTTP/1.x 200 OK Serwer: Microsoft-IIS/5.1 Data: pon., 13 lipca 2009 17:05 : 14 GMT X-Powered-by ASP.NET X-aspnet wersja: 2.0.50727 Content-Disposition: attachment; filename = test.xml Content-Length: 2040 Cache-Control: prywatny Content Wpisz: text/xml – nickytonline

Odpowiedz

7

Spróbuj zmienić:

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

do:

Response.AddHeader ("Content-Disposition", "mocowanie, nazwa pliku =" + HttpUtility.UrlEncode (nazwach));

Kod działa we wszystkich przeglądarkach (w tym w Firefoksie, której używamy intensywnie).

+0

@Jose. Tak, to jest to. Znalazłem to około 30 minut temu w tym poście, http://www.webmaster-talk.com/asp-forum/35962-content-disposition-does-nto-work-firefox.html. Dzięki za publikację. – nickytonline

6

Rozwiązano problemy z przestrzeniami firefox. Otocz nazwę pliku cudzysłowami.

Zmień kod poniżej

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

do

response.AddHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\""); 
Powiązane problemy