pdf test routine

This commit is contained in:
2026-08-18 16:00:06 +02:00
parent 14a7cc2738
commit a19cdf6074
18 changed files with 2077 additions and 14 deletions
+95
View File
@@ -0,0 +1,95 @@
<?php
// upload_pdf_example.php
// Riceve un PDF di esempio via POST (multipart), lo salva in pdftemplates/
// e aggiorna la colonna sample_pdf del template.
//
// Rispecchia la logica di upload_xls_example.php ma per i PDF.
header('Content-Type: application/json');
include('include/headscript.php');
// --- Helper risposta JSON ---
function respond(bool $success, string $message = '', array $extra = []): void
{
echo json_encode(array_merge([
'success' => $success,
'message' => $message,
], $extra));
exit;
}
// --- Validazione input ---
$templateId = isset($_POST['template_id']) ? (int)$_POST['template_id'] : 0;
if ($templateId <= 0) {
respond(false, 'Missing or invalid template_id.');
}
if (!isset($_FILES['pdf_file']) || $_FILES['pdf_file']['error'] !== UPLOAD_ERR_OK) {
respond(false, 'No file uploaded or upload error.');
}
$file = $_FILES['pdf_file'];
// --- Controllo estensione e MIME ---
$originalName = $file['name'];
$ext = strtolower(pathinfo($originalName, PATHINFO_EXTENSION));
if ($ext !== 'pdf') {
respond(false, 'Only PDF files are allowed.');
}
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $file['tmp_name']);
finfo_close($finfo);
if ($mime !== 'application/pdf') {
respond(false, 'The uploaded file is not a valid PDF (mime: ' . htmlspecialchars($mime) . ').');
}
// --- Cartella di destinazione ---
$targetDir = __DIR__ . '/pdftemplates';
if (!is_dir($targetDir)) {
if (!mkdir($targetDir, 0775, true) && !is_dir($targetDir)) {
respond(false, 'Cannot create destination folder pdftemplates/.');
}
}
if (!is_writable($targetDir)) {
respond(false, 'Destination folder pdftemplates/ is not writable.');
}
// --- Nome file sicuro e univoco ---
$safeBase = preg_replace('/[^A-Za-z0-9_\-]/', '_', pathinfo($originalName, PATHINFO_FILENAME));
$safeBase = trim($safeBase, '_');
if ($safeBase === '') {
$safeBase = 'sample';
}
$filename = 'tpl' . $templateId . '_' . $safeBase . '_' . date('YmdHis') . '.pdf';
$targetPath = $targetDir . '/' . $filename;
// --- Sposta il file ---
if (!move_uploaded_file($file['tmp_name'], $targetPath)) {
respond(false, 'Failed to move uploaded file.');
}
// --- Aggiorna il database ---
try {
$db = DBHandlerSelect::getInstance();
$pdo = $db->getConnection();
$stmt = $pdo->prepare("UPDATE excel_templates SET sample_pdf = :sample_pdf WHERE id = :id");
$stmt->execute([
':sample_pdf' => $filename,
':id' => $templateId,
]);
} catch (Throwable $e) {
// Se il DB fallisce, rimuovo il file per non lasciare orfani
@unlink($targetPath);
respond(false, 'Database update failed: ' . $e->getMessage());
}
respond(true, 'File uploaded successfully.', ['filename' => $filename]);