Update createArticle-controller.php

This commit is contained in:
2026-06-14 12:53:46 +02:00
parent 1dbef5ca4b
commit b8e884a5aa
+33 -23
View File
@@ -73,36 +73,46 @@ require_once '../validator/article-validator.php';
mkdir($uploadDir, 0755, true); mkdir($uploadDir, 0755, true);
} }
foreach ($blocks as &$block) { if (is_array($blocks)) {
// Base64-Format-Prüfung: foreach ($blocks as &$block) {
if ($block['type'] === 'image' && str_starts_with($block['value'], 'data:image/')) { // sicherstellen, dass 'type' und 'value' existieren:
if (isset($block['type']) && isset($block['value']) && $block['type'] === 'image' && str_starts_with($block['value'], 'data:image/')) {
// Base64-String zerlegen: // Base64-String zerlegen
$parts = explode(',', $block['value']); $parts = explode(',', $block['value']);
$metadata = $parts[0];
$base64Data = $parts[1];
// Dateiendung ermitteln // falls der String korrupt ist und kein Komma hat
preg_match('/data:image\/(?<extension>.*?);/', $metadata, $matches); if (count($parts) < 2) {
$extension = $matches['extension'] ?? 'jpg'; continue;
if ($extension === 'jpeg') { $extension = 'jpg'; } }
// Eindeutigen Dateinamen generieren $metadata = $parts[0];
$fileName = 'img_' . uniqid() . '.' . $extension; $base64Data = $parts[1];
$filePath = $uploadDir . $fileName;
// Datei im /uploads speichern: // Dateiendung ermitteln
if (file_put_contents($filePath, base64_decode($base64Data)) !== false) { preg_match('/data:image\/(?<extension>.*?);/', $metadata, $matches);
// temporären Base64-String durch den echten Pfad ersetzen $extension = $matches['extension'] ?? 'jpg';
$block['value'] = 'uploads/' . $fileName; if ($extension === 'jpeg') {
} else { $extension = 'jpg';
$_SESSION["message"] = "image_upload_error"; }
header("location: ../../index.php?pfad=createArticle");
exit(); // Eindeutigen Dateinamen generieren
$fileName = 'img_' . uniqid() . '.' . $extension;
$filePath = $uploadDir . $fileName;
// Datei im /uploads speichern:
if (file_put_contents($filePath, base64_decode($base64Data)) !== false) {
// temporären Base64-String durch den echten Pfad ersetzen
$block['value'] = 'uploads/' . $fileName;
} else {
$_SESSION["message"] = "image_upload_error";
header("location: ../../index.php?pfad=createArticle");
exit();
}
} }
} }
unset($block);
} }
unset($block);
// Aktualisiertes Array wieder in JSON konvertieren // Aktualisiertes Array wieder in JSON konvertieren
$finalContent = json_encode($blocks, JSON_UNESCAPED_UNICODE); $finalContent = json_encode($blocks, JSON_UNESCAPED_UNICODE);