pdf test routine
This commit is contained in:
@@ -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]);
|
||||
Reference in New Issue
Block a user