'latest', // 'region' => 'us-east-1', // 'endpoint' => 'https://storage.manjapro.net', // 'use_path_style_endpoint' => true, // 'credentials' => [ // 'key' => 'admin', // 'secret' => '@P4ssw0rd', // ], // ]); // $bucket = 'files'; // try { // $result = $minio->putObject([ // 'Bucket' => $bucket, // 'Key' => $objectPath, // 'Body' => $imageData, // <== langsung dari memori, bukan file // 'ContentType' => 'image/png', // 'ACL' => 'public-read', // ]); // return $result['ObjectURL']; // } catch (Exception $e) { // error_log('Upload MinIO gagal: ' . $e->getMessage()); // return false; // } // } function uploadToMinioStorageRaw($fileData, $objectPath) { // --- Inisialisasi koneksi MinIO --- $minio = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1', 'endpoint' => 'https://storage.manjapro.net', // URL MinIO kamu 'use_path_style_endpoint' => true, 'credentials' => [ 'key' => 'admin', // Ganti sesuai kredensial kamu 'secret' => '@P4ssw0rd', // Ganti sesuai kredensial kamu ], 'suppress_php_deprecation_warning' => true ]); $bucket = 'files'; // --- Tentukan Content-Type berdasarkan ekstensi file --- $ext = strtolower(pathinfo($objectPath, PATHINFO_EXTENSION)); switch ($ext) { case 'jpg': case 'jpeg': $contentType = 'image/jpeg'; break; case 'png': $contentType = 'image/png'; break; case 'pdf': $contentType = 'application/pdf'; break; case 'txt': $contentType = 'text/plain'; break; case 'json': $contentType = 'application/json'; break; default: $contentType = 'application/octet-stream'; } try { // --- Upload langsung dari memori ke MinIO --- $result = $minio->putObject([ 'Bucket' => $bucket, 'Key' => $objectPath, 'Body' => $fileData, 'ContentType' => $contentType, 'ACL' => 'public-read', // agar bisa diakses publik ]); return $result['ObjectURL']; } catch (AwsException $e) { error_log('Upload MinIO gagal: ' . $e->getMessage()); return false; } catch (Exception $e) { error_log('Kesalahan umum: ' . $e->getMessage()); return false; } } ?>