Hi,
ich habe mehrere Dateien als Binary Large Objects in einer Datenbank gespeichert. Konkret handelt es sich dabei um MP3- und FLV-Dateien.
Diese lese ich per php aus der Datenbank aus. Funktioniert soweit.
Mein Skript:
bietet mir beim Aufruf die Datei auch zum download an. Anhören kann ich sie mir dann auch.
Jetzt möchte ich diese geladenen Datei aber einem Player übergeben, ohne sie auf der Festplatte noch einmal zwischen zu speichern.
Dazu verwende ich den Flowplayer.
und übergebe ihm die URL des Lade-Skriptes.
Leider funktioniert die Wiedergabe dann nicht mehr.
Weiss jemand, ob mein Vorhaben prinzipiell unmöglich ist oder ob es am Player liegt, oder ob ich irgendwo einen Fehler habe?
Dank schonmal.
Mfg LuigiEd
ich habe mehrere Dateien als Binary Large Objects in einer Datenbank gespeichert. Konkret handelt es sich dabei um MP3- und FLV-Dateien.
Diese lese ich per php aus der Datenbank aus. Funktioniert soweit.
Mein Skript:
PHP:
$conn_string = "host=localhost port=5432 dbname=mmDB user=postgres password=geheim";
$dbconn = pg_connect($conn_string);
$ID = $_GET['ID'];
$Medien = pg_query($dbconn, 'Select "Name", "Stream", "sType" from "Medium" where "ID"=' .$ID);
while($row = pg_fetch_row($Medien)){
$oid = $row[1]; // greift auf die 2. gezogene Spalte (Stream) zu und gibt die OID des BLOBS zurück
$sType = $row[2];
}
pg_query($dbconn, "begin"); // es muss eine Transaktion begonnen werden
$handle = pg_lo_open($dbconn, $oid, "r"); // in lack of a better variable name
switch($sType){
case 'a':
header("Content-type: audio/mp3"); // der Header ist das ERSTE, was ausgegeben wird. Sonst: Fehler
break;
case 't':
header("Content-type: text/plain");
break;
case 'v':
header("Content-type: video/x-flv");
break;
}
pg_lo_read_all($handle) or die("trying"); //pg_lo_read(...) gibt die gelesenen Bytes direkt an den Browser weiter
// Aufräumarbeiten
pg_query($dbconn, "commit");
pg_lo_close($handle);
pg_close($dbconn);
bietet mir beim Aufruf die Datei auch zum download an. Anhören kann ich sie mir dann auch.
Jetzt möchte ich diese geladenen Datei aber einem Player übergeben, ohne sie auf der Festplatte noch einmal zwischen zu speichern.
Dazu verwende ich den Flowplayer.
HTML:
href="http://localhost/postgresSQL-Test/postgresTest.php?ID=2
und übergebe ihm die URL des Lade-Skriptes.
Leider funktioniert die Wiedergabe dann nicht mehr.
Weiss jemand, ob mein Vorhaben prinzipiell unmöglich ist oder ob es am Player liegt, oder ob ich irgendwo einen Fehler habe?
Dank schonmal.
Mfg LuigiEd