Hallo mensen,

Ik was vandaag bezig met mijn persoonlijke website, dat echt bedoeld is voor mij alleen. Nu was ik bezig met het maken van een File Manager zodat ik overal bij bepaalde bestanden kan.
Nu probeer ik alleen te zorgen dat als ik bijvoorbeeld naar deze link ga: http://site.nl/bestanden/school/foto.png

Dat het plaatje dan meteen gedownload wordt.
Dus niet als je naar de link gaat dat je dan het plaatje te zien krijgt op het scherm maar dat het meteen gedownload word. Iemand enig idee hoe ?
# Downloads van een .png forceren in .htaccess
AddType application/octet-stream .png
Dit is juist het tegenovergestelde van wat ik wil ? Het is juist de bedoeling dat als ik bijvoorbeeld dit plaats: <a href="http://site.nl/bestanden/school/foto.png">OPEN</a> dat je dan meteen het plaatje download. Niet dat het plaatje juist niet gedownload kan worden ;)
Dat zeg ik: die regel in .htaccess dwingt een download af.

Maar afgaande op het commando “OPEN” in je link, moet het bestand kennelijk worden geopend? Waarin dan? Moet het bijvoorbeeld direct in Photoshop worden geopend?
Uhm nee het is niet de bedoeling dat het bestand ergens in geopend wordt, maar gewoon word gedownload.
Ik heb het zo gedaan :

<div id="file">
    <div id="fileInfo">
      <p>Bestands grootte etc.</p>
    </div>
    <div id="fileOptions">
      <a href="">Opslaan</a> - 
      <a href="">Bekijken</a> - 
      <a href="">Verwijderen</a> - 
      <a href="">Hernoemen.</a>
    </div>
</div>

En dan is het de bedoeling dat als ik op "Opslaan" klikt dat ik het bestand dan automatisch download doordat ik naar de link van het bestand word gestuurd dus : "http://site.nl/bestanden/school/foto.png" het is dan vervolgens niet de bedoeling dat het ergens in wordt geopend.
Ik heb hier een klein voorbeeldje voor je: <?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?>

Dit is dan voor PDF
Bron: http://php.net/manual/en/function.header.php
Ah koen geweldig, dit is inderdaad wat ik zocht. Heb het nu wel met een omweggetje gedaan:
<a href="file.php?file='.$file->getPath().'">'.$file->getName().'</a>
File.php :
<?php
if(isset($_GET['file'])){
header('Content-Disposition: attachment; filename="'.$_GET['file'].'"');
}
?>
Maar dit kan ik wel even mooi maken met Mod_rewrite en dan even wat beveiliging inbouwen ;)
Offtopic: 2de keer dat ik iemand (goed) help. ik ga lekker :P
On: Succes!
Tingeling, even aan de bel trekken: iedereen kan nu via de ongecontroleerde $_GET['file'] élk bestand downloaden.
@Ward van der Put

Dan zal hij post moeten gebruiken.
Koen Hollander op 20/01/2013 17:29:40
Dan zal hij post moeten gebruiken.
De HTTP-methode heeft er weinig mee te maken. Als je de rechten op het opgevraagde bestand niet controleert, is directory traversal mogelijk. En daarmee kun je werkelijk alles downloaden, bijvoorbeeld een config-bestand met je databaseaccount.

Reageren