Via een anker roep ik de jquery ajax aan die vervolgesn het php script aanroept.
<a href="#download" class="cb_down" title="Download">Download</a>
// AJAX for Checkbox download
$(document).on('click' , '.cb_down' , function() {
var checkboxes_down = [];
$('.rafcheckbox').each(function() {
if(this.checked) {
checkboxes_down.push($(this).val());
}
});
checkboxes_down = checkboxes_down.toString();
$.ajax({
url:"",
method:"POST",
data:{ checkboxes_down:checkboxes_down },
success:function(response){
// geen response nodig
}
});
});
De php:
// Multiple download (checkboxes)
if(isset($_POST["checkboxes_down"])) {
// create a tmp folder for the zip file
$tmpfolder = $MainFolderName.'/tmp';
if (!is_dir($tmpfolder)) {
mkdir($tmpfolder, 0755, true);
}
$checkboxfiles = explode("," , $_POST["checkboxes_down"]);
$filename = "archive.zip";
$filepath = $tmpfolder."/";
foreach($checkboxfiles as $checkboxfile) {
Zip($checkboxfile, $tmpfolder."/archive.zip"); // "Zip" is functie die archive.zip file maakt
}
if(file_exists($tmpfolder.'/archive.zip')){
// http headers for zip downloads
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$filename."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ". filesize($filepath.$filename));
while (ob_get_level()) {
ob_end_clean();
}
readfile($filepath.$filename);
unlink($tmpfolder.'/archive.zip'); // unlink archive.zip
rmdir($tmpfolder); // remove tmpdir
exit;
}
}
Als ik een aantal checkboxen aanvink en op Download klik, wordt de archive.zip gemaakt met alle bestanden erin. Ik heb dit gechecked en dit werkt goed!
Alleen: readfile($filepath.$filename); werkt niet.
Ik heb geen idee waarom ik de .zip niet als download gepresenteerd krijg...