/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Content-disposition + filnavn
Fra : Mikkel Z. Herold


Dato : 05-10-06 22:25

Hej.

Dette er måske et browser-spørgsmål, men måske er der nogen her, der har
erfaringer med at sende pdf'er med PHP:

Jeg har et PHP-script, der skal åbne en pdf-fil, helst i en indlejret
Adobe i browseren. Til det formål sender jeg nogle headers:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
header("Content-Type: application/pdf");
header("Content-Length: " . filesize($name));
header("Content-disposition: inline; filename=$filnavn");

Den sidste linje burde gøre, at pdf'en vises i browseren (inline), og at
den får filnavnet $filnavn - mit problem er, at filnavnet bliver ignoreret!

Når jeg vil gemme pdf'en foreslår både IE6 og FF filnavnet
"vis_pdf.pdf", som er navnet på mit PHP-dokument, men med pdf-endelsen.
Opera åbner pdf'en i en separat Acrobat med et "internt" navn (f.eks.
"opr000UY.pdf"). Ingen af dem respekterer altså filename-direktivet i
headeren.

Hvis man sætter Content-disposition: attachment;, så spiller det som det
skal med filnavnet, men til gengæld får man selvfølgelig en "Gem
som"-dialogboks.

Er der nogen, der kender en løsning på det?

Mikkel

--
"At first just a rustle of canvas
And the gentlest breath on my face
But a galloping line of white horses
Said that soon we were in for a race"
Sting - The Wild Wild Sea

http://www.mzh.dk

 
 
Michael Rasmussen (05-10-2006)
Kommentar
Fra : Michael Rasmussen


Dato : 05-10-06 22:57

On Thu, 05 Oct 2006 23:24:58 +0200, Mikkel Z. Herold wrote:

>
> Er der nogen, der kender en løsning på det?
>
header("Content-disposition: inline; filename=$filnavn");

Måske det ikke har nogen betydning, men i rfc-1806 ser det ud på
følgende måde: Content-Disposition. Bemærk stort D.

Herudover skal der ifølge samme rfc, være ; efter filnavn. Altså:
header("Content-Disposition: inline; filename=$filnavn;");

--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917


Mikkel Z. Herold (05-10-2006)
Kommentar
Fra : Mikkel Z. Herold


Dato : 05-10-06 23:52

On 05-10-2006 23:57 Michael Rasmussen wrote:
> header("Content-Disposition: inline; filename=$filnavn;");

Desværre, det løste ikke problemet.

Mikkel

--
"At first just a rustle of canvas
And the gentlest breath on my face
But a galloping line of white horses
Said that soon we were in for a race"
Sting - The Wild Wild Sea

http://www.mzh.dk

Mikkel Z. Herold (28-02-2007)
Kommentar
Fra : Mikkel Z. Herold


Dato : 28-02-07 14:27

On 05-10-2006 23:24 Mikkel Z. Herold wrote:
> header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
> header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
> header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
> header("Pragma: no-cache");
> header("Content-Type: application/pdf");
> header("Content-Length: " . filesize($name));
> header("Content-disposition: inline; filename=$filnavn");

Vil lige nævne, at IE7 fortolker ovenstående nogenlunde korrekt i
modsætning til IE6:

Højreklik og "Gem destination som" på linket til vis_pdf.php foreslår
det rigtige filnavn. Til gengæld foreslår den stadigvæk "vis_pdf.pdf",
hvis jeg åbner filen i en indlejret acrobat og derefter vil gemme.

Dog stadigvæk et fremskridt, at man kan få den til at foreslå det
rigtige filnavn i den ene situation.

Mikkel

--
"At first just a rustle of canvas
And the gentlest breath on my face
But a galloping line of white horses
Said that soon we were in for a race"
Sting - The Wild Wild Sea

www.mzh.dk

Peter Brodersen (01-03-2007)
Kommentar
Fra : Peter Brodersen


Dato : 01-03-07 21:32

On Wed, 28 Feb 2007 14:27:11 +0100, "Mikkel Z. Herold"
<mikkel@[remove_this]mzh.dk> wrote:

>> header("Content-disposition: inline; filename=$filnavn");
>
>Vil lige nævne, at IE7 fortolker ovenstående nogenlunde korrekt i
>modsætning til IE6:

En lille detalje fra RFC2616, som det godt kan være at browserne er
ligeglade med:

filename skal være angivet som en quoted-string, fx:

Content-Disposition: attachment; filename="fname.ext"

I PHP, på én linje:
header("Content-disposition: inline;
filename=\"".addslashes($filnavn)."\"");

Det kan være, det giver problemer, hvis der er mellemrum og deslige i
filnavnet.

--
- Peter Brodersen
Kendt fra Internet

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste