/** * Télécharger un fichier */ public function download($payload = null) { global $conf, $db; $element = $payload['element']; // ex: 'product' $parentId = $payload['parentId']; $ref = $payload['ref']; // nom du fichier // Construire le chemin $dir = $conf->$element->dir_output; $filepath = $dir . '/' . $parentId . '/' . $ref; if (!file_exists($filepath)) { return ['File not found', 404]; } // Retourner le fichier en base64 $content = file_get_contents($filepath); $mime = mime_content_type($filepath); $base64 = base64_encode($content); return [[ 'filename' => $ref, 'mime' => $mime, 'content' => 'data:' . $mime . ';base64,' . $base64 ], 200]; } /** * Uploader un fichier */ public function upload($payload = null) { global $conf, $user; $element = $payload['element']; $parentId = $payload['parentId']; $filename = $payload['filename']; $content = $payload['content']; // base64 // Décoder le contenu $data = base64_decode(preg_replace('#^data:.+;base64,#', '', $content)); // Chemin de destination $dir = $conf->$element->dir_output . '/' . $parentId; // Créer le dossier si nécessaire if (!is_dir($dir)) { dol_mkdir($dir); } $filepath = $dir . '/' . $filename; // Sauvegarder if (file_put_contents($filepath, $data) === false) { return ['Error saving file', 500]; } return [['path' => $filepath], 201]; }