Avatar billede agermose Nybegynder
17. september 2009 - 13:02 Der er 6 kommentarer

php csv output åbnes ikke i excel (IE8)

php csv output åbnes ikke i excel (IE8)
(er php virkelig så ukendt at det ikke har sin egen kategori på eksperten eller har jeg bare overset det :) )

anyway, har et PHP script, der generere og sender noget CSV. Normalt/tidligere og i Firefox ender dette med at blive åbnet i Excel, men det ser ud til at IE8 har skiftet kurs og nu åbner siden direkte i IE og viser den således som plaintekst.

koden var/er:

header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=$file");
header("X-Content-Type-Options: nosniff");
header("Content-Length: $fsize");
header("cache-control: no-transform");
header("Pragma: no-cache");
header("Expires: 0");

jeg har forsøgt med forskellige Content-Type også mxexcel kendte typer, men lige lidt hjælper det. jeg har også hardcodet filename til noget forskelligt med forskellige .xls osv. men lige lidt hjælper det.
Der ser ud til at IE ikke genkender/bruger "filename" i content-disposition til noget og derfor skyder helt forkert når den "sniffer" hvad den modtager. Det ser også ud til at den er helt lige glad med "nosniff", som ellers er indført i IE8 til netop dette.

Nogen ideer/løsninger?
Avatar billede repox Seniormester
17. september 2009 - 13:35 #1
"(er php virkelig så ukendt at det ikke har sin egen kategori på eksperten eller har jeg bare overset det :) )"
Hvilken kategori er det lige du mener du har skrevet i?

Når jeg skal tvinge en download bruger jeg disse headers:

    $file = "minfil.csv");
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header("Content-Disposition: attachment; filename=".$file);
    header("Content-Type: application/zip");
    header("Content-Transfer-Encoding: binary");


Virker upåklageligt...
Avatar billede agermose Nybegynder
18. september 2009 - 10:23 #2
ja, ups :D det var fordi jeg kopierede teksten fra et andet forum inden der dér var en, der henviste til denne PHP kategori :D det sker jo.

mit problem er ikke at IE bare åbner filen og viser den. IE kommer skam frem med den dialog der hedder "save, open eller cancel". Problemet er at vælger man "open", så viser den ikke filen i Excel, men i IE browseren. Og det dur ikke. Det virkede før i alle version og virker i Firefox - bare ikke i IE8 så vidt jeg kan konstatere.

Så jeg har ikke noget problem med at få IE til at spørge om hvad der skal ske. Men det er ikke en "download/save" jeg går efter men en direkte åbning i excel.
Avatar billede repox Seniormester
18. september 2009 - 10:29 #3
Kunne man forestille sig det bare var lokalt og ikke havde noget med din kode at gøre?
Det er jo dine lokale indstillinger der bestemmer hvilket program der vælges til at åbne en givet fil med. Min indstilling er at åbne .csv filer med ultraedit. Indstillingerne ændres forskelligt på de forskellige styresystemer...
Avatar billede agermose Nybegynder
18. september 2009 - 14:09 #4
det kan sagtens være en forklaring. Jeg har ikke checket alle brugernes indstillinger, men for mit eget vedkommende, så har jeg checket og med risiko for at jeg fortsat fucker rundt i det her vista/IE crap (ups) så skulle den del nu være i orden.

så vidt jeg kan konstatere handler det stadig om at IE8 ikke kigger på det filnavn eller content type der bliver sendt.

men lad mig spørge den anden vej, har du rent faktisk med succes testet det du foreslår med windows/IE8?

Ellers er vi jo lige vidt :) min kode virker jo også på alle andre kombi (vi har testet i hvertfald).
Avatar billede repox Seniormester
18. september 2009 - 14:12 #5
Ja, det fungerer fint her og vi bruger det også til kundeløsninger.
Jeg har ikke hørt om dit problem før, så jeg antager at det kun er et problem hos dig.
Avatar billede agermose Nybegynder
18. september 2009 - 15:40 #6
AH, jeg flyttede koden lidt rundt, linux, windows server, tilbage, klippede og klistrede, lavede minimalle sider der alle virkede lige meget hvor og hvordan. Det, der gør udslaget er at i prodution kører det under https. Det ser ud til at fucke med IEs evne til at åben den i Excel.

stadigt dybt underligt men dog en halv åbenbaring :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester