Bytestream in PHP?

alphaChill

Mitglied
Hallo alle zusammen,

folgendes: Ich habe hier ein Prgramm vor mir, welches aus einer Datenbank sich Daten holt und diese in eine Datei schreibt. Diese Datei wird lokal auf dem Server gespeichert und kann auch heruntergeladen werden. Nun soll es jedoch vermieden werden, dass die Datei tatsächlich auf dem Server gespeichert wird.
Die Datei soll jetzt direkt "gestreamt" wertden, also während des Downloads soll die Datei erstellt werden.

Jetzt wäre meine Frage: Wie ist das mit PHP möglich, meines Wissens müsste das ja mit einem Bytestream gehen. Gibt es in PHP einen Bytestream (oder habe ich bisher den Wald vor lauter Bäumen nicht gesehen)?

Gruß
 
Erstelle eine PHP-Datei die den Output zusammenstellt.
In dieser sendest du zuerst den Header und dann die Daten.

stream.php
PHP:
<?php
header('Content-Type:text/xml');

// Es wird test.xml benannt und zum Download bereitgestellt
header('Content-Disposition: attachment; filename="test.xml"');

//Ingalt ausgeben (Das kann irgendwa sein, Daten aus der Db etc.)
echo '<?xml version="1.0" standalone="yes"?>
<Positionen>
  <Position>
    <PosNr>M100</PosNr>
    <Kurz>Fliesen stemmen</Kurz>
    <Lang>Fliessen schön sauber rausstemmen und Schutt weg fegen</Lang>
    <Preis>50</Preis>
    <Flaeche>50qm</Flaeche>
    <Gesamt>2500</Gesamt>
  </Position>
</Positionen>';
?>

und dann einfach aufrufen
HTML:
<a href="stream.php">Mein XML zum Download</a>
 
Hallo yaslaw,

als erstes möchte ich dir für deine Hilfe danken! Die paar Zeilen Code waren sehr hilfreich und ich bin der Lösung wieder etwas näher :)

Mein aktuelles Problem(chen) ist folgendes:

Alles, was nach
PHP:
header('Content-Type:text/xml');
header('Content-Disposition: attachment; filename="test.xml"');
ausgegeben wird, wird in die xml-Datei geschrieben und zum Download angeboten, leider auch:
HTML:
<a href="stream.php">Mein XML zum Download</a>
 
HTML:
<a href="stream.php">Mein XML zum Download</a>
Das steht in einer anderen Datei. ist ein html-Aufruf des Streams. Es dient nur dazu, die zu zeigen wie du dann den Stream aufrufen kannst.
 
Ohman, dafür gehöre ich bestraft... Schon das zweite Mal in dieser Woche, dass mir solch eine Kleinigkeit nicht aufgefallen ist :(

Vielen Dank noch mal für deine Hilfe!
 
Zurück