[PHP/HTTP/IE] Content-Disp attach direct openen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • JasperE
  • Registratie: December 2003
  • Laatst online: 11-09 18:26
Ik heb het volgende probleem,
Ik heb een php pagina welke een bestand uit een database haalt en deze aan de client ter download aanbied. De url naar dit php script ziet er uit als /download.php?downloadid=1234

Het PHP script
code:
1
2
3
4
5
6
7
$filename="test1234.jpg";
$file=base64_decode($string_uit_sql);
$size=strlen($file);
header(sprintf("Content-Disposition: attachment; filename=%s; size=%s;",$filename,$size));
header("Content-Length: ".$size."bytes");
print $file;
exit;


Bovenstaande werkt prima in firefox, maar in IE6 wil het alleen werken als je in de download dialog eerst "save as" kiest en vervolgens het bestand opent. Kies je in in plaats van voor "save as" direct voor "openen" dan wordt het bestand gedownload en gebeurt er vergolgens niets. Ook geen foutmelding.
Heeft iemand hier een oplossing voor?

[ Voor 2% gewijzigd door JasperE op 20-03-2007 09:43 . Reden: IE6 ipv IE5 ]


Acties:
  • 0 Henk 'm!

  • Rowdy.nl
  • Registratie: Juni 2003
  • Laatst online: 18-09 14:48

Rowdy.nl

Koekje d'r bij?

IE5? Damn... ;)

However, ik gebruik in een (ietsje ouder) aspx script inline ipv attachment, en dat functioneert goed in ons intranet. (IE6 en IE7 zeker) Ik weet niet 100% zeker of het ook in IE5 werkt...

Ik geef verder ook nog een content type mee, zodat IE weet wat ie er mee aan moet. Weergeven, zoals een plaatje, openen, zoals een excel of pdf bestand, of gewoon opslaan (exe, onbekend).

Rowdy.nl - X++ by day. C# by night. I drink coffee in the morning and beer in the evening.


Acties:
  • 0 Henk 'm!

  • JasperE
  • Registratie: December 2003
  • Laatst online: 11-09 18:26
Oeps, IE6 SP2 bedoelde ik!
Ik kies voor attachment omdat ik nu juist de optie wil bieden om te kiezen tussen Openen en Save As.
Met inline zou die keuze al voor de gebruiker gemaakt zijn, dat is niet precies wat ik wil.

[ Voor 137% gewijzigd door JasperE op 20-03-2007 09:44 ]


Acties:
  • 0 Henk 'm!

  • Rowdy.nl
  • Registratie: Juni 2003
  • Laatst online: 18-09 14:48

Rowdy.nl

Koekje d'r bij?

JasperE schreef op dinsdag 20 maart 2007 @ 09:42:
Oeps, IE6 SP2 bedoelde ik!
Ik kies voor attachment omdat ik nu juist de optie wil bieden om te kiezen tussen Openen en Save As.
Met inline zou die keuze al voor de gebruiker gemaakt zijn, dat is niet precies wat ik wil.
Probeer dan eens het Content Type mee te geven. Ik kan best begrijpen dat IE niet weet wat ie ermee aan moet, omdat je IE niet verteld wat voor bestand het is... ;)

Rowdy.nl - X++ by day. C# by night. I drink coffee in the morning and beer in the evening.


Acties:
  • 0 Henk 'm!

Verwijderd

volgens mij moet je ook nog een header meegeven die verteld in welke applicatie deze moet worden geopend.

voorbeeld:

PHP:
1
header("Content-Type: application/vnd.ms-excel");


hmm was net te laat..

[ Voor 6% gewijzigd door Verwijderd op 20-03-2007 09:51 ]


Acties:
  • 0 Henk 'm!

  • JasperE
  • Registratie: December 2003
  • Laatst online: 11-09 18:26
Een probleem is dat dit mime-type niet in de database wordt opgeslagen :\
Ook vind ik het vreemd dat dit mime-type benodigd is. Kies ik voor content-disposition: inline, dan werkt het allemaal prima en worden afbeeldingen gewoon weergegeven in de browser.
Zal eens gaan proberen met mod_rewrite de url laten te eindigen op de extensie van het bestand. Misschien werkt het dan wel.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Je hebt serverside al het bestand en je weet de extensie, dan is het zetten van die header toch redelijk triviaal?

{signature}


Acties:
  • 0 Henk 'm!

  • JasperE
  • Registratie: December 2003
  • Laatst online: 11-09 18:26
Bestandsextensie in url verwerken heeft het opgelost.

De .htaccess mod_rewrite regel:
code:
1
RewriteRule ^download/([^/]+)/([^/]+)$ /downloadfile.php?id=$1


url ziet er dan uit als blah.com/download/1234/bestandje.jpg

[ Voor 7% gewijzigd door JasperE op 20-03-2007 15:34 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

JasperE schreef op dinsdag 20 maart 2007 @ 15:33:
Bestandsextensie in url verwerken heeft het opgelost.

De .htaccess mod_rewrite regel:
code:
1
RewriteRule ^download/([^/]+)/([^/]+)$ /downloadfile.php?id=$1


url ziet er dan uit als blah.com/download/1234/bestandje.jpg
dat is idd een leuke workarround, maar waarom volg je niet hier de adviezen op (waar je om vroeg) en zet je de content-type (iets wat min of meer gewoon verplicht is! )
Pagina: 1