From cf7068d7c61f7871529de7d7fd0825e4b8af8f54 Mon Sep 17 00:00:00 2001 From: Claudio Date: Mon, 31 Mar 2025 14:10:46 +0200 Subject: [PATCH] change logo --- .gitignore | 4 +-- public/userarea/upload_photo.php | 60 ++++++++++++++++++++++++-------- 2 files changed, 48 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index 38c52e3..a469a57 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,7 @@ /public/hot /public/storage /storage/*.key - +/vendor /.idea /.fleet /.vscode @@ -12,7 +12,7 @@ Homestead.json Homestead.yaml npm-debug.log yarn-error.log - +.env .phpunit.result.cache .php_cs.cache /documentation diff --git a/public/userarea/upload_photo.php b/public/userarea/upload_photo.php index 086aa6f..64cb8dc 100644 --- a/public/userarea/upload_photo.php +++ b/public/userarea/upload_photo.php @@ -40,10 +40,10 @@ if (!is_writable($uploadDir)) { exit; } -// Verifica che il file sia un'immagine -$allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; +// Verifica che il file sia un'immagine (inclusi HEIC/HEIF) +$allowedTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/heic', 'image/heif']; if (!in_array($photo['type'], $allowedTypes)) { - echo json_encode(['success' => false, 'message' => 'Il file deve essere un\'immagine (JPEG, PNG, GIF)']); + echo json_encode(['success' => false, 'message' => 'Il file deve essere un\'immagine (JPEG, PNG, GIF, HEIC)']); exit; } @@ -56,24 +56,56 @@ if (!file_exists($photo['tmp_name']) || !is_uploaded_file($photo['tmp_name'])) { // Rinomina il file: idriga-timestamp-nomeoriginale.estensione $timestamp = date('YmdHis'); $originalName = pathinfo($photo['name'], PATHINFO_FILENAME); -$extension = pathinfo($photo['name'], PATHINFO_EXTENSION); -$newFileName = "{$iddatadb}-{$timestamp}-{$originalName}.{$extension}"; -$destination = $uploadDir . $newFileName; +$extension = strtolower(pathinfo($photo['name'], PATHINFO_EXTENSION)); + +// Se il file è HEIC/HEIF, convertilo in JPEG +if (in_array($photo['type'], ['image/heic', 'image/heif'])) { + // Verifica che la libreria GD sia disponibile + if (!extension_loaded('gd')) { + echo json_encode(['success' => false, 'message' => 'La libreria GD non è disponibile per convertire il file HEIC']); + exit; + } + + // Carica il file HEIC + $image = imagecreatefromstring(file_get_contents($photo['tmp_name'])); + if ($image === false) { + echo json_encode(['success' => false, 'message' => 'Impossibile caricare il file HEIC']); + exit; + } + + // Crea un nuovo nome per il file JPEG + $newFileName = "{$iddatadb}-{$timestamp}-{$originalName}.jpg"; + $destination = $uploadDir . $newFileName; + + // Salva l'immagine come JPEG + if (!imagejpeg($image, $destination, 90)) { // 90 è la qualità JPEG + imagedestroy($image); + echo json_encode(['success' => false, 'message' => 'Errore durante la conversione del file HEIC in JPEG']); + exit; + } + + // Libera la memoria + imagedestroy($image); +} else { + // Per i formati non HEIC, usa il nome e l'estensione originali + $newFileName = "{$iddatadb}-{$timestamp}-{$originalName}.{$extension}"; + $destination = $uploadDir . $newFileName; + + // Salva il file + if (!move_uploaded_file($photo['tmp_name'], $destination)) { + $error = error_get_last(); + echo json_encode(['success' => false, 'message' => 'Errore durante il caricamento del file: ' . (isset($error['message']) ? $error['message'] : 'Sconosciuto')]); + exit; + } +} // Debug: verifica i percorsi error_log("Upload directory: $uploadDir"); error_log("Destination: $destination"); error_log("Temp file: " . $photo['tmp_name']); -// Salva il file -if (!move_uploaded_file($photo['tmp_name'], $destination)) { - $error = error_get_last(); - echo json_encode(['success' => false, 'message' => 'Errore durante il caricamento del file: ' . (isset($error['message']) ? $error['message'] : 'Sconosciuto')]); - exit; -} - // Salva il riferimento nel database $stmt = $pdo->prepare("INSERT INTO datadb_photos (iddatadb, file_path, file_name, uploaded_by) VALUES (?, ?, ?, ?)"); -$stmt->execute([$iddatadb, $newFileName, $photo['name'], $iduserlogin]); +$stmt->execute([$iddatadb, $newFileName, $newFileName, $iduserlogin]); echo json_encode(['success' => true, 'message' => 'Foto caricata con successo']);