Я пытаюсь создать zip-файл с классом ZipArchive, содержащий pdf-файл, созданный также с библиотекой FPDF.
Я использую для этого ajax и PHP, проблема в том, что я не знаю, как установить заголовки в ajax для принудительной загрузки в браузере. Содержимое файла читается в моем HTML, а не отправляется обратно в zip-загрузку.
PHP-скрипт:
<?php
require('config/config.php');
require('fpdf/fpdf.php');
if(!isset($_SESSION))
{
session_start();
}
$output = "";
if(isset($_SESSION['user']))
{
$currentTime = time();
if($currentTime < $_SESSION['expire'])
{
if(!empty($_POST['candidacy']))
{
$stmt = $cnx->prepare('SELECT * FROM candidacies WHERE id = :candidacy');
$stmt->bindValue(':candidacy', $_POST['candidacy'], PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($result);
foreach($result as $key => $value)
{
$nameUser = $value['lastName']." ".$value['firstName'];
$emailUser = $value['email'];
}
$pdf = new FPDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->Image('img/candidacy.jpg',10,6,25);
$pdf->SetFont('Times','',13);
$pdf->Cell(60);
$pdf->Cell(80,10, utf8_decode('Candidacy'),1,1,'C');
$pdf->ln();
$pdf->Cell(60);
$pdf->Cell(80,10, date("d/m/Y"),1,1,'C');
$pdf->ln();
$pdf->Cell(50,10,'Nom complet : ', 0,0);
$pdf->Cell(65,10, utf8_decode($nameUser), 0,1);
$pdf->Cell(50,10, 'Email : ', 0,0);
$pdf->Cell(100,10, utf8_decode($emailUser), 0,1);
$file = 'CCandidacy-'.$nameUser.'.pdf';
$pdf->Output('F', $file);
if(extension_loaded('zip'))
{
$zip = new ZipArchive();
$zip_name = md5(random_bytes(64)).".zip";
if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE)
{
$output .= "Impossible to create zip !";
}
$zip->addFile($file);
$zip->close();
if(file_exists($zip_name))
{
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$zip_name);
header('Content-Length: ' . filesize($zip_name));
readfile($zip_name);
unlink($zip_name);
}
}
else
{
$output .= "Check extension !";
}
return $zip_name;
}
}
}
else
{
unset($_SESSION['user']);
session_destroy();
header('Location: ../login.php');
exit(0);
}
JS-скрипт:
function zipExtract(candidacy)
{
var content = {};
content['candidacy'] = candidacy;
$.post('zipCandidacy.php', content, function(data)
{
location.href = data;
});
}