Mailinglisten-Archive |
Hallo Niels, vielen Dank erstmal für die Antwort. Eine Sache ist mir allerdings noch unklar: Was genau meinst Du mit "sicher on-the-fly" erzeugen? Mein jetziger Code sieht so aus: <?php $text = 'BIBTEX Einträge aus der Datenbank...'; $datei = $daten["title"].'.bib'; $handle = fopen($datei, "w"); fwrite($handle, $text); fclose($handle); ?> Die erzeugte Datei bleibt hier allerdings dauerhaft bestehen. Lieber wäre mir eine temporäre Datei. Allerdings habe ich mit den entsprechenden Funktionen (tempnam() usw.) noch keine Erfahrung, meine ersten Versuche habe somit auch nicht geklappt... Wie muss ich meinen Code ändern/erweitern? Viele Grüße, Jan Niels Jäckel schrieb: > Hallo Jan, > > >> ich möchte mit php eine Bibtex-Datei erzeugen. Dazu sollen Daten aus >> einer MySQL-Datenbank in eine temporäre Datei geschrieben werden. Diese >> soll an den Browser zum Download geschickt werden. Danach soll die Datei >> wieder gelöscht werden. >> >> Wie genau funktioniert sowas? >> > > Ich gebe dir mal den (allgemeinen) groben Ablauf - ohne auf etwaige (mir > nicht bekannte) Tücken mit Bibtex-Files einzugehen: > > - Du erzeugst die Datei sicher on-the-fly. D.h. diese Datei liegt zu > keinem Zeitpunkt im Dateisystem des Servers - muss also am Ende > auch nicht gelöscht werden. > - Es sei denn du hast viele Zugriffe, dann wäre ein Caching und damit > die Ablage im Dateisystem wieder sinnvoll. > > 1. Abfrage der Datenbank > 2. Zusammenbauen der Datei in EINEN String. > (sicherlich mit foreach(...) über allen Datensätzen) > > 3. Korrekte Headers an den Client senden > header('Content-Type: x-application/x-octet-stream'); > header('Content-Disposition: attachment; filename="datei.bib"'); > header('Content-Transfer-Encoding: binary'); > header('Content-Length: '. strlen($content)); > > 4. Content senden > (echo $content) > > > > Grüße, > Niels >
php::bar PHP Wiki - Listenarchive