Muszę wysłać plik CSV w odpowiedzi HTTP. Jak ustawić odpowiedź wyjściową jako format CSV?
To nie działa:
Response.ContentType = "application/CSV";
Za pomocą text/csv
jest najbardziej odpowiednim typem.
Powinieneś również rozważyć dodanie Content-Disposition
nagłówka do odpowiedzi. Często tekst / csv będzie ładowany przez Internet Explorer bezpośrednio do hostowanej instancji programu Excel. To może, ale nie musi być pożądany wynik.
Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv");
Powyższe spowoduje wyświetlenie okna dialogowego „Zapisz jako”, które może być tym, co zamierzasz.
Typ MIME CSV to text / csv zgodnie z RFC 4180 .
źródło
Użyj
text/csv
jako typu zawartości.źródło
Przez lata doskonaliłem doskonały zestaw nagłówków, który działa doskonale we wszystkich przeglądarkach, które znam
źródło
Wypróbuj jeden z tych innych typów MIME (stąd: http://filext.com/file-extension/CSV )
Ponadto typ MIME może rozróżniać małe i wielkie litery ...
źródło
Po prostu użyj tak
źródło
return new EmptyResult()
aby nazwa pliku została zachowana. W przeciwnym razie IE spróbuje zapisać plik jakoActionName.htm
.W ASP.net MVC możesz użyć a
FileContentResult
orazFile
metody:źródło
Odkryłem, że problem z IE polega na tym, że wącha dane zwrotne i decyduje o tym, jaki typ zawartości uważa za wysłany. Istnieje wiele skutków ubocznych, które to powoduje, na przykład zawsze otwieranie okna dialogowego saveAs dla plików tekstowych, ponieważ używasz kompresji przesyłanych danych. Rozwiązaniem jest (w kodzie php) ......
źródło
Ustawienie typu zawartości i rozmieszczenia treści w sposób opisany powyżej powoduje bardzo różne wyniki w różnych przeglądarkach:
IE8: okno dialogowe SaveAs zgodnie z życzeniem, a Excel jako domyślna aplikacja. 100% dobra.
Firefox: pojawia się okno dialogowe SaveAs, ale Firefox nie ma pojęcia, że jest to arkusz kalkulacyjny. Sugeruje otwarcie go w Visual Studio! 50% dobra
Chrome: wskazówki są w pełni ignorowane. Dane CSV są wyświetlane w przeglądarce. 0% dobrego.
Oczywiście we wszystkich tych przypadkach mam na myśli przeglądarki, gdy wychodzą z pudełka, bez dostosowywania mapowań MIME / aplikacji.
źródło
Sugeruję wstawienie znaku „/” przed „myfilename.cvs”
Mam nadzieję, że uzyskasz lepsze wyniki.
źródło
W przypadku C # MVC 4.5 musisz wykonać następujące czynności:
źródło