aboutsummaryrefslogtreecommitdiff
path: root/src/controller/ImageUploadController.php
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2026-06-10 20:56:25 +0200
committerpolo <ordipolo@gmx.fr>2026-06-10 20:56:25 +0200
commitae217a6e4b0c29346381e2a410fd7810cb33ce3f (patch)
tree206f604c9297deabf78bb33f31a1e6b9303d2258 /src/controller/ImageUploadController.php
parent99d2616a08c98e7067cdb12f0bcbd4ac0cffaeb0 (diff)
downloadcms-ae217a6e4b0c29346381e2a410fd7810cb33ce3f.tar.gz
cms-ae217a6e4b0c29346381e2a410fd7810cb33ce3f.tar.bz2
cms-ae217a6e4b0c29346381e2a410fd7810cb33ce3f.zip
Tous les contrôleurs retournent une Response!
Diffstat (limited to 'src/controller/ImageUploadController.php')
-rw-r--r--src/controller/ImageUploadController.php51
1 files changed, 18 insertions, 33 deletions
diff --git a/src/controller/ImageUploadController.php b/src/controller/ImageUploadController.php
index ddd99ae..af9a553 100644
--- a/src/controller/ImageUploadController.php
+++ b/src/controller/ImageUploadController.php
@@ -3,6 +3,8 @@
3 3
4declare(strict_types=1); 4declare(strict_types=1);
5 5
6use Symfony\Component\HttpFoundation\JsonResponse;
7
6class ImageUploadController 8class ImageUploadController
7{ 9{
8 const ALLOWED_EXTENSIONS = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'tiff', 'tif']; 10 const ALLOWED_EXTENSIONS = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'tiff', 'tif'];
@@ -78,16 +80,13 @@ class ImageUploadController
78 } 80 }
79 81
80 // téléchargement par le plugin (bouton "insérer une image") 82 // téléchargement par le plugin (bouton "insérer une image")
81 static public function imageUploadTinyMce(): void 83 static public function imageUploadTinyMce(): JsonResponse
82 { 84 {
83 if(!isset($_FILES['file'])){ 85 if(!isset($_FILES['file'])){
84 http_response_code(400); 86 return new JsonResponse(['message' => 'Erreur 400: Bad Request'], JsonResponse::HTTP_BAD_REQUEST); // code 400
85 echo json_encode(['message' => 'Erreur 400: Bad Request']);
86 } 87 }
87 if(!is_uploaded_file($_FILES['file']['tmp_name'])) { 88 if(!is_uploaded_file($_FILES['file']['tmp_name'])) {
88 http_response_code(400); 89 return new JsonResponse(['message' => "Le fichier n'a pas été téléchargé correctement."], JsonResponse::HTTP_BAD_REQUEST); // code 400
89 echo json_encode(['message' => "Le fichier n'a pas été téléchargé correctement."]);
90 die;
91 } 90 }
92 91
93 $dest = 'user_data/images/'; 92 $dest = 'user_data/images/';
@@ -113,35 +112,29 @@ class ImageUploadController
113 // 112 //
114 113
115 if(self::imagickCleanAndWriteImage($image_data, $local_path)){ // recréer l’image pour la nettoyer 114 if(self::imagickCleanAndWriteImage($image_data, $local_path)){ // recréer l’image pour la nettoyer
116 echo json_encode(['location' => $local_path]); // renvoyer l'URL de l'image téléchargée 115 return new JsonResponse(['location' => $local_path]); // renvoyer l'URL de l'image téléchargée
117 } 116 }
118 else{ 117 else{
119 http_response_code(500); 118 return new JsonResponse(['message' => 'Erreur image non valide'], JsonResponse::HTTP_INTERNAL_SERVER_ERROR); // code 500
120 echo json_encode(['message' => 'Erreur image non valide']);
121 } 119 }
122 die;
123 } 120 }
124 121
125 // collage de HTML => recherche de balises <img>, téléchargement côté serveur et renvoi de l'adresse sur le serveur 122 // collage de HTML => recherche de balises <img>, téléchargement côté serveur et renvoi de l'adresse sur le serveur
126 static public function uploadImageHtml(): void 123 static public function uploadImageHtml(): JsonResponse
127 { 124 {
128 $json = json_decode(file_get_contents('php://input'), true); 125 $json = json_decode(file_get_contents('php://input'), true);
129 126
130 if(!isset($json['image_url'])){ 127 if(!isset($json['image_url'])){
131 http_response_code(400); 128 return new JsonResponse(['message' => "Erreur 400: Bad Request"], JsonResponse::HTTP_BAD_REQUEST); // code 400
132 echo json_encode(['message' => "Erreur 400: Bad Request"]);
133 die;
134 } 129 }
135 130
136 $image_data = self::curlDownloadImage($json['image_url']); // téléchargement de l’image par le serveur avec cURL au lieu de file_get_contents 131 $image_data = self::curlDownloadImage($json['image_url']); // téléchargement de l’image par le serveur avec cURL au lieu de file_get_contents
137 if(!$image_data){ 132 if(!$image_data){
138 http_response_code(400); 133 return new JsonResponse(['message' => "Erreur, le serveur n'a pas réussi à télécharger l'image."], JsonResponse::HTTP_BAD_REQUEST); // code 400
139 echo json_encode(['message' => "Erreur, le serveur n'a pas réussi à télécharger l'image."]);
140 die;
141 } 134 }
142 135
143 $dest = 'user_data/images/'; 136 $dest = 'user_data/images/';
144 if(!is_dir($dest)) { // Vérifier si le répertoire existe, sinon le créer 137 if(!is_dir($dest)){ // Vérifier si le répertoire existe, sinon le créer
145 mkdir($dest, 0755, true); 138 mkdir($dest, 0755, true);
146 } 139 }
147 140
@@ -154,17 +147,15 @@ class ImageUploadController
154 $local_path = uniqid($dest . $name . '_') . '.' . $extension; 147 $local_path = uniqid($dest . $name . '_') . '.' . $extension;
155 148
156 if(self::imagickCleanAndWriteImage($image_data, $local_path)){ // recréer l’image pour la nettoyer 149 if(self::imagickCleanAndWriteImage($image_data, $local_path)){ // recréer l’image pour la nettoyer
157 echo json_encode(['location' => $local_path]); // nouvelle adresse 150 return new JsonResponse(['location' => $local_path]); // nouvelle adresse
158 } 151 }
159 else{ 152 else{
160 http_response_code(500); 153 return new JsonResponse(['message' => 'Erreur image non valide', 'format' => $extension], JsonResponse::HTTP_INTERNAL_SERVER_ERROR); // code 500
161 echo json_encode(['message' => 'Erreur image non valide', 'format' => $extension]);
162 } 154 }
163 die;
164 } 155 }
165 156
166 // collage simple d'une image (base64 dans le presse-papier) non encapsulée dans du HTML 157 // collage simple d'une image (base64 dans le presse-papier) non encapsulée dans du HTML
167 static public function uploadImageBase64(): void 158 static public function uploadImageBase64(): JsonResponse
168 { 159 {
169 $json = json_decode(file_get_contents('php://input'), true); 160 $json = json_decode(file_get_contents('php://input'), true);
170 $dest = 'user_data/images/'; 161 $dest = 'user_data/images/';
@@ -175,9 +166,7 @@ class ImageUploadController
175 166
176 // détection de data:image/ et de ;base64, et capture du format dans $type 167 // détection de data:image/ et de ;base64, et capture du format dans $type
177 if(!isset($json['image_base64']) || !preg_match('/^data:image\/(\w+);base64,/', $json['image_base64'], $type)){ 168 if(!isset($json['image_base64']) || !preg_match('/^data:image\/(\w+);base64,/', $json['image_base64'], $type)){
178 http_response_code(400); 169 return new JsonResponse(['message' => 'Données image base64 manquantes ou invalides'], JsonResponse::HTTP_BAD_REQUEST); // code 400
179 echo json_encode(['message' => 'Données image base64 manquantes ou invalides']);
180 die;
181 } 170 }
182 171
183 $extension = strtolower($type[1]); // dans (\w+) 172 $extension = strtolower($type[1]); // dans (\w+)
@@ -188,19 +177,15 @@ class ImageUploadController
188 $name = 'pasted_image'; 177 $name = 'pasted_image';
189 $image_data = base64_decode(substr($json['image_base64'], strpos($json['image_base64'], ',') + 1)); // découpe la chaine à la virgule puis convertit en binaire 178 $image_data = base64_decode(substr($json['image_base64'], strpos($json['image_base64'], ',') + 1)); // découpe la chaine à la virgule puis convertit en binaire
190 if($image_data === false){ 179 if($image_data === false){
191 http_response_code(400); 180 return new JsonResponse(['message' => 'Décodage base64 invalide'], JsonResponse::HTTP_BAD_REQUEST); // code 400
192 echo json_encode(['message' => 'Décodage base64 invalide']);
193 die;
194 } 181 }
195 $local_path = uniqid($dest . $name . '_') . '.' . $extension; 182 $local_path = uniqid($dest . $name . '_') . '.' . $extension;
196 183
197 if(self::imagickCleanAndWriteImage($image_data, $local_path)){ 184 if(self::imagickCleanAndWriteImage($image_data, $local_path)){
198 echo json_encode(['location' => $local_path]); 185 return new JsonResponse(['location' => $local_path]);
199 } 186 }
200 else{ 187 else{
201 http_response_code(500); 188 return new JsonResponse(['message' => 'Erreur image non valide', 'format' => $extension], JsonResponse::HTTP_INTERNAL_SERVER_ERROR); // code 500
202 echo json_encode(['message' => 'Erreur image non valide', 'format' => $extension]);
203 } 189 }
204 die;
205 } 190 }
206} \ No newline at end of file 191} \ No newline at end of file