untitled.bmp I Internet Explorer

October 3, 2008 · Posted in Udvikling 

Jeg har døjet med et irriterende problem …

Jeg genererer nogle grafer ved hjælp af PEAR’s Image_Graph. Jeg ville gerne have at brugernes browsere foreslog et filnavn der gav mening når de valgte at gemme graferne. Endvidere ville jeg gerne have at brugerne kunne printe graferne. Første problem løste jeg ved at sætte følgende header:

Content-Disposition: inline; filename="mingraf.png"

Som sidebemærkning kan det nævnes at den version jeg brugte af Image_graph sætter den header selv når man kalder $Graph->done(), men den sætter den forkert. Skal man bruge den header, skal man selv sætte den.

Det fungerer også fint i Firefox, men i Internet Explorer* (må den brænde i helvede!) valgte den altid at gemme billedet som untitled.bmp, og IE kunne heller ikke printe grafen. Ved print opførte den sig som den gør hvis billedet ikke findes.

Så opgaven var 1) filnavn og 2) print

Løsningen blev 1) tillad caching 2) undgå cookies

Dog skal man være opmærksom på, at hvis man kun tillader eller opfordre til caching vil IE gemme grafen som untitled.bmp såfrem man har prøvet at printe eller brugt “Vis udskrift”.

Hvordan man implementerer det er op til en selv, men man skal undgå at sende cookies, samt undgå headere der indikerer at siden ikke må caches. Der blev fra PHP’s side sendt en Cache-Control: no-cache. Den overskrev jeg til sidst i mit script til at sende en Cache-Control: cache.

Sendes der andre caching-begrænsende headere skal disse ligeledes overskrives af headere der tillader eller opfordre til caching. Umiddelbart er jeg kun stødt på Cache-Control, Pragma samt Expires.

Min motivation for at grafen oprindeligt skulle sende en cookie bunder i, at man kun skulle have adgang til den hvis man var logget ind. Derfor inkluderede alle mine script noget koder der kontrollerede brugeren, hvorfor den også satte en cookie hvis man havde adgang.

*) Jeg har kun testet det i Internet Explorer 7.0.5730.13

Comments

Leave a Reply





  • Om websmed.dk

    Jeg hedder Morten, og jeg har udviklet webapplikationer siden slutningen af 90'erne.

    Jeg vil her dele ud af min erfaring, og med jævne mellemrum poste nogle tips og tricks, samt løsningsforslag på generelle dagligdags problemstillinger.

    Jeg har en forkærlighed for PHP og MySQL, hvorfor I nok vil se flest indlæg der vedrører den gren af webudvikling.

    Jeg har en anden blog af mere personlig karakter på mbn.dk, hvor I kan finde kontaktmuligheder m.m.

    Mine indlæg vil tit være baseret på problemstillinger i mit daglige virke, eller i mit eget firma MRLYTICS, hvor jeg sælger kundeundersøgelser samt kundedatabaser.

    Denne side er hostet hos slicehost.

  • Skrevet på Twitter