summaryrefslogtreecommitdiff
path: root/src/controller/ajax.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/controller/ajax.php')
-rw-r--r--src/controller/ajax.php39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/controller/ajax.php b/src/controller/ajax.php
index 6813d45..a462921 100644
--- a/src/controller/ajax.php
+++ b/src/controller/ajax.php
@@ -142,7 +142,46 @@ elseif(isset($_GET['action']) && $_GET['action'] == 'upload_image_url'){
142 } 142 }
143 die; 143 die;
144} 144}
145// cas du collage d'une image (code base64) non encapsulée dans du HTML
146elseif(isset($_GET['action']) && $_GET['action'] == 'upload_image_base64'){
147 $json = json_decode(file_get_contents('php://input'), true);
148 $dest = 'images/';
149
150 if(!is_dir('images')){
151 mkdir('images', 0777, true);
152 }
145 153
154 // détection de data:image/ et de ;base64, et capture du format dans $type
155 if(!isset($json['image_base64']) || !preg_match('/^data:image\/(\w+);base64,/', $json['image_base64'], $type)){
156 http_response_code(400);
157 echo json_encode(['message' => 'Données image base64 manquantes ou invalides']);
158 die;
159 }
160
161 $allowed_extensions = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'tiff', 'tif'];
162 $extension = strtolower($type[1]);
163 if(!in_array($extension, $allowed_extensions) || $extension === 'jpg'){
164 $extension = 'jpeg';
165 }
166
167 $image_data = base64_decode(substr($json['image_base64'], strpos($json['image_base64'], ',') + 1)); // découpe la chaine à la virgule puis convertit en binaire
168 if($image_data === false){
169 http_response_code(400);
170 echo json_encode(['message' => 'Décodage base64 invalide']);
171 die;
172 }
173
174 $local_path = $dest . 'pasted_image_' . uniqid() . '.' . $extension;
175
176 if(imagickCleanImage($image_data, $local_path)){
177 echo json_encode(['location' => $local_path]);
178 }
179 else{
180 http_response_code(500);
181 echo json_encode(['message' => 'Erreur image non valide']);
182 }
183 die;
184}
146 185
147// détection des requêtes de type XHR, y en a pas à priori 186// détection des requêtes de type XHR, y en a pas à priori
148/*elseif(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'){ 187/*elseif(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'){