Maar daar ga je allebei naar de afbeelding en moet je rechts klikken om hem te downloaden. Is er ook een manier om gelijk een download schermpje te krijgen? Dus als je op de knop klikt dat hij dan vraagt of je hem wil downloaden en waar.
Wat jij wilt kan door de HTTP headers die meegestuurd worden, te voorzien van een content-disposition header.
Het is al uitgelegd in onderstaande link. Je hebt wel een server-side script nodig.
Maak een bestand 'getimage.php' aan met de volgende code:
if(isset($_GET['file'])) { $path_parts = pathinfo($_GET['file']); $validext = array( 'jpg' , 'gif' , 'png' ); $ext = $path_parts['extension'];
if (in_array($ext, $validext, true)) { $file = 'images/'.$path_parts['filename'].".".$ext;
if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; } else { echo "Plaatje $file niet gevonden."; } } else { echo "Deze extensie is niet toegestaan."; } } else { echo "Geen bestandsnaam opgegeven."; }
?>
Maak in dezelfde map een subdir "images" en stop daar een plaatje in, bv. ' goeievraag.png'.
Maak dan ook nog een HTML bestand aan en zet daarin:
Downloaden
Ik heb het getest en het werkt. Merk op dat het slim is om er veel beveiligingen in te stoppen zodat het script niet misbruikt kan worden om in andere directories te komen en andere bestanden dan plaatjes te downloaden.
Zet tijdelijk even // voor alle header() statements, dan zie je misschien een foutmelding. Heb je een subdir 'images' aangemaakt die in de dir onder je php script staat?