Signatur
Beschreibung
cubrid_save_to_glo liest den Inhalt einer lokalen Datei und schreibt ihn in eine bestehende GLO-Instanz (Generalized Large Object) in einer CUBRID-Datenbank. GLOs sind ein CUBRID-spezifischer Mechanismus zur Speicherung großer Binärdaten (ähnlich BLOBs) als eigenständige Datenbankobjekte.
Die Funktion wird eingesetzt, wenn große Dateien – etwa Bilder, Videos oder Dokumente – direkt in der Datenbank persistiert werden sollen, ohne sie zuvor in ein Byte-Array konvertieren zu müssen. Als Voraussetzung muss die GLO-Instanz bereits existieren und über ihre OID (Object Identifier) referenzierbar sein.
Der Ablauf ist typischerweise: zuerst eine neue GLO-Instanz mit cubrid_new_glo anlegen, die zurückgegebene OID merken und anschließend mit cubrid_save_to_glo die gewünschte Datei in diese Instanz speichern.
Hinweis: Diese Funktion ist veraltet und wurde aus dem CUBRID PHP-Treiber in neueren Versionen entfernt. Für aktuelle Projekte sollten stattdessen CUBRID-BLOBs und CLOBs verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $conn_identifier Pflicht | resource | Eine gültige CUBRID-Verbindungsressource, wie sie von cubrid_connect zurückgegeben wird. |
|
| $oid Pflicht | string | Die OID (Object Identifier) der Ziel-GLO-Instanz, in die der Dateiinhalt geschrieben werden soll. Die OID muss zuvor mit cubrid_new_glo erzeugt worden sein. |
|
| $file_name Pflicht | string | Der vollständige Dateipfad zur lokalen Quelldatei, deren Inhalt in die GLO-Instanz gespeichert werden soll. |
Rückgabewert
1 zurück, wenn die Datei erfolgreich in die GLO-Instanz gespeichert wurde, oder 0 im Fehlerfall.Beispiele
Bild in eine GLO-Instanz speichern
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . cubrid_error());
}
// Neue GLO-Instanz anlegen
$oid = cubrid_new_glo($conn, 'glo', '/var/www/uploads/foto.jpg');
if ($oid) {
// Datei in die GLO-Instanz speichern
$result = cubrid_save_to_glo($conn, $oid, '/var/www/uploads/foto.jpg');
if ($result === 1) {
echo 'Datei erfolgreich gespeichert. OID: ' . $oid;
} else {
echo 'Fehler beim Speichern der Datei.';
}
} else {
echo 'GLO-Instanz konnte nicht erstellt werden.';
}
cubrid_disconnect($conn);
?>
Datei hochladen und in CUBRID-GLO ablegen
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (isset($_FILES['upload']) && $_FILES['upload']['error'] === UPLOAD_ERR_OK) {
$tmpPath = $_FILES['upload']['tmp_name'];
// Neue GLO-Instanz für den Dateityp anlegen
$oid = cubrid_new_glo($conn, 'glo', $tmpPath);
if ($oid) {
$result = cubrid_save_to_glo($conn, $oid, $tmpPath);
if ($result === 1) {
// OID in einer Tabelle speichern
$sql = "INSERT INTO uploads (filename, glo_oid) VALUES ('"
. cubrid_real_escape_string($conn, $_FILES['upload']['name'])
. "', '" . $oid . "')";
cubrid_query($sql, $conn);
echo 'Datei gespeichert mit OID: ' . $oid;
}
}
}
cubrid_disconnect($conn);
?>
// Wichtig · Fallstricke
Veraltet: cubrid_save_to_glo sowie der gesamte GLO-Mechanismus gelten als veraltet. In modernen CUBRID-PHP-Treibern (ab Version 8.4+) wurde die GLO-Unterstützung entfernt. Für neue Projekte sollten cubrid_lob2_new, cubrid_lob2_write und verwandte LOB-Funktionen verwendet werden.
Sicherheit: Beim Speichern hochgeladener Dateien sollte der Dateiinhalt vor der Ablage in der Datenbank validiert werden (MIME-Typ, Dateigröße, Dateiinhalt). Die OID sollte niemals direkt aus Benutzereingaben übernommen werden, um unbeabsichtigtes Überschreiben fremder GLO-Instanzen zu vermeiden.
Die Funktion überschreibt den bestehenden Inhalt der GLO-Instanz vollständig. Ein teilweises Aktualisieren ist nicht möglich.