login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Header

Offline Frederic - 29/05/2005 19:46
Avatar van FredericPHP ver gevorderde Ik heb op mijn site een systeem om alle bestanden in een map te echo'en, maar nu stuit ik op volgend probleem:
ik link gewoon naar word bestanden etc, maar deze worden dan geopent in IE zelf, wat wel vervelend is! Is er een mogelijkheid om via header te zorgen dat deze bestanden altijd worden gedownload (zo via een downloadvenstertje)? Is het trouwens ook mogelijk dan zelf te kiezen welke bestandsnaam deze bestanden moeten krijgen om te downloaden?

24 antwoorden

Gesponsorde links
Offline Thomas - 29/05/2005 19:49
Avatar van Thomas Moderator Is er een mogelijkheid om via header te zorgen dat deze bestanden altijd worden gedownload (zo via een downloadvenstertje) ?

Ja.

Is het trouwens ook mogelijk dan zelf te kiezen welke bestandsnaam deze bestanden moeten krijgen om te downloaden ?

Ja.
Offline Frederic - 29/05/2005 19:52
Avatar van Frederic PHP ver gevorderde OK bedankt FangorN, die er niks om geeft om toch wel enkele leden op te jagen dankzij je net iets te directe & letterlijke replies. Ochja, zo mensen moeten er ook zijn...
Een methode hoe zou ook wel leuk zijn als je die zou vermelden 
Offline Fenrir - 29/05/2005 20:04
Avatar van Fenrir PHP expert Hier en hier
Offline Frederic - 29/05/2005 22:07
Avatar van Frederic PHP ver gevorderde Laatste vraag:
Ik heb nu dit:
  1. <?php
  2. if(isset($_GET['download'])){
  3. if(!strstr($_GET['download'], '..')){
  4. $bestand = $_GET['download'];
  5. if(file_exists($dir.$bestand)){
  6. header("Content-Description: File Transfer");
  7. header("Content-Type: application/force-download");
  8. header("Content-Disposition: attachment; filename=".substr($bestand,6));
  9. header("Content-Length: ".filesize($dir.$bestand));
  10. @readfile($dir.$bestand);
  11. }else{
  12. header("Location: ".$_SERVER['REQUEST_URI']."&melding=Dit is een ongeldig bestand om te downloaden!");
  13. }
  14. }else{
  15. header("Location: ".$_SERVER['REQUEST_URI']."&melding=Dit is een ongeldig bestand om te downloaden!");
  16. }
  17. }
  18. ?>

Maar nu, als ik een bestand heb dat bvb 'sitemasters document.doc' heet, dan gaat ie als bestandsnaam om te downloaden geven: sitemasters. Hij neemt dus niets na de spatie...
Offline Thomas - 29/05/2005 22:10
Avatar van Thomas Moderator Filename tussen quotes zetten dan eh ? Of misschien urlencode() gebruiken ?
Offline Frederic - 29/05/2005 22:14 (laatste wijziging 29/05/2005 22:16)
Avatar van Frederic PHP ver gevorderde hmmm, nog vreemder: als ik deze methode gebruik dan zijn de afbeeldingen die ik download blanco en in de excel documenten zit een kopie van de pagina van mijn site 
Bij bestandsnaam komt er ook gewoon te staan: 'index'
Offline Gml - 30/05/2005 06:58
Avatar van Gml HTML beginner je mag niks anders wegschrijven in de pagina waar je de code uitvoert anders krijg je corrupte bestanden
Offline Frederic - 30/05/2005 18:18 (laatste wijziging 30/05/2005 18:18)
Avatar van Frederic PHP ver gevorderde OK, ik heb volgende controle ingebouwd:

  1. <?php
  2. if(isset($_GET['download'])){
  3. echo "OK1";
  4. if(!strstr($_GET['download'], '..')){
  5. echo "OK2";
  6. $bestand = $_GET['download'];
  7. if(file_exists($dir.$bestand)){
  8. echo "OK3";
  9. header("Content-Description: File Transfer");
  10. header("Content-Type: application/force-download");
  11. header("Content-Disposition: attachment; filename=".$bestand."");
  12. header("Content-Length: ".filesize($dir.$bestand));
  13. readfile($dir.$bestand);
  14. }else{
  15. header("Location: index.php?Pagina=persoonlijke_bestanden&melding=Dit is een ongeldig bestand om te downloaden!");
  16. }
  17. }else{
  18. header("Location: index.php?Pagina=persoonlijke_bestanden&melding=Dit is een ongeldig bestand om te downloaden!");
  19. }
  20. }
  21. ?>

En als ik alle 4 de header regels weglaat (net onder OK3), dan werkt alles wel, er komt te staan: OK1OK2OK3, dus hij kan het bestand wel degelijk vinden!
Laat ik deze wel staan, dan krijg ik een mooi downloadvenstertje, maar als ik het bestand download en open krijg ik een fout van ongeldig bestand! En zo heb ik dat met word bestanden, excel files etc.
Offline ElCheapo - 30/05/2005 18:28
Avatar van ElCheapo PHP beginner zorg ervoor dat er echt geen andere output is (laat ook spaties, enters weg, niet voor alle typen belangrijk maar sommige wel).
nu komt er dus ok1ok2ok3 voor te staan.
Offline Frederic - 30/05/2005 18:37
Avatar van Frederic PHP ver gevorderde opmerking: ik heb wel bovenaan mijn pagina ob_start(); staan, en error reporting op all, dus daar kan het niet aan liggen! (krijg geen enkele error)
Offline Steven - 30/05/2005 19:07
Avatar van Steven HTML interesse Hmz, als je nu eens deze bestandsnaam neemt:

sitemasters_document.doc
ipv
sitemasters document.doc

Misschien werkt dat, het is wel heel simpel maar je weet maar nooit 
Offline prorsoft - 30/05/2005 19:12 (laatste wijziging 30/05/2005 19:13)
Avatar van prorsoft PHP gevorderde of zo:
  1. <?
  2. str_replace(" ","_",$bestandsnaam);
Offline Frederic - 30/05/2005 19:16
Avatar van Frederic PHP ver gevorderde nee hoor, dat doet ook niets! 
Offline Steven - 30/05/2005 19:19 (laatste wijziging 30/05/2005 19:21)
Avatar van Steven HTML interesse Was ook wel te verwachten, is te makkelijk... 
Offline Frederic - 30/05/2005 19:23
Avatar van Frederic PHP ver gevorderde Ik snap het echt niet... het bestand is nochtans gevonden, want anders krijg ik een error (het path klopt ook zéker!)
Offline Steven - 30/05/2005 19:57
Avatar van Steven HTML interesse Probeer eens .zip
Offline Frederic - 30/05/2005 19:58
Avatar van Frederic PHP ver gevorderde hoe bedoel je?
Offline Steven - 30/05/2005 20:00
Avatar van Steven HTML interesse Nou gewoon het "bestand" dat je wilt laten downloaden, in een zip bestand zetten, dus:: sitemasters.zip
Offline prorsoft - 30/05/2005 20:02 (laatste wijziging 30/05/2005 20:03)
Avatar van prorsoft PHP gevorderde
  1. <?
  2. if(file_exists($dir.$bestand)){

moet dit geen
  1. <?
  2. if(file_exists($dir."/".$bestand)){

zijn?
Offline Legolas - 30/05/2005 20:03
Avatar van Legolas Onbekend dat IE de doc opent, doet ie automatisch, zet er mss bij, om hem te misleiden^^, Content-type = application.
Hij is íets anders, maar ik ken hem niet meer uit m'n hoofd, zo denkt IE dat hij een toepassing download;-)
Offline prorsoft - 30/05/2005 20:04 (laatste wijziging 30/05/2005 20:04)
Avatar van prorsoft PHP gevorderde @Legolas: nee hoor, een PHP of Perl pagina is tog ook een application??
Een Word docje volgens mij ook hoor...
Offline Frederic - 30/05/2005 20:08
Avatar van Frederic PHP ver gevorderde @prorsoft: nee, want in $dir staat al een "/" op't einde!
.zip werkt ook niet... En als ik het voorbeeld van php.net gebruik (stel dat het voor een pdf is)
  1. <?php
  2. header("Content-type: application/pdf");
  3. header("Content-Disposition: attachment; filename=downloaded.pdf");
  4. readfile($dir.$bestand);
  5. ?>

nog niet
Offline Legolas - 30/05/2005 20:12
Avatar van Legolas Onbekend probeer deze content-type:
application/octet-stream
Offline Frederic - 30/05/2005 21:23
Avatar van Frederic PHP ver gevorderde nope 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.253s