%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
<?php
/**
* Handler unduh dokumen tanggapan permohonan (berdasarkan Nomor Resi).
* Nomor Resi berperan sebagai token akses bagi pemohon.
*/
require_once __DIR__ . '/config/config.php';
require_once __DIR__ . '/includes/queries.php';
$resi = get_param('resi');
$row = $resi !== '' ? get_permohonan_by_resi($resi) : null;
if (!$row || empty($row['file_tanggapan'])) {
http_response_code(404);
die('Dokumen tanggapan tidak ditemukan.');
}
$path = UPLOAD_PATH . '/tanggapan/' . basename($row['file_tanggapan']);
if (!is_file($path)) {
http_response_code(404);
die('Berkas tidak tersedia.');
}
if (ob_get_level()) {
ob_end_clean();
}
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $path) ?: 'application/octet-stream';
finfo_close($finfo);
header('Content-Type: ' . $mime);
header('Content-Disposition: attachment; filename="Tanggapan-' . preg_replace('/[^A-Za-z0-9\-]/', '', $row['no_resi']) . '.' . pathinfo($path, PATHINFO_EXTENSION) . '"');
header('Content-Length: ' . filesize($path));
header('Cache-Control: must-revalidate');
readfile($path);
exit;