PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datei aus SQL-Abfrage on-the-fly generieren


kaepten
02.02.2005, 14:46:41
Hallo,

ich habe folgendes Problem:

Ich würde gerne Informationen aus meiner SQL-Datenbank auslesen (Select...), einen "String" erzeugen und diesen als Datei versenden.

Also: on the fly...

Wichtig ist, daß nichts auf dem Server gespeichert wird sondern quasi im RAM erzeugt und dann einmalig versendet wird.

Geht das? Kann ich einem Header einen String als Quelle zuweisen?

Danke im voraus... kaepten

CrAnE
02.02.2005, 16:23:27
Kannst du die datei nicht erst auf dem server erstellen, versenden und dann löschen?

mfg Crane

kaepten
03.02.2005, 08:05:13
Hallo CrAnE,

das wäre sicherliche eine Lösung...

Die von mir erdachte Lösung wäre nur schöner. Außerdem geht wes hier um das sichere Erzeugen von Dateien für Nutzer meiner Seite. Wenn also jemand versteht nach welchem Schema ich die Exporte benenne könnte er auch andere runterladen?

Das mit dem Löschen ist mir sowieso nicht klar... es kann doch passieren, daß ich die Datei lösche bevor der User sie geladen hat? Wäre vom verhalten her "unschön".

Ist es denn möglich einen String statt einer Datei zu schicken?

xabbuh
03.02.2005, 10:02:50
Original geschrieben von kaepten
Das mit dem Löschen ist mir sowieso nicht klar... es kann doch passieren, daß ich die Datei lösche bevor der User sie geladen hat? Wäre vom verhalten her "unschön".
Was soll denn mit der Datei passieren? Soll sie dem Benutzer als Anlage einer E-Mail geschickt werden oder soll die Datei zum Download angeboten werden?

kaepten
03.02.2005, 12:31:27
Die Idee war, daß man sein Format auswählt und dann eine Datei übertragen bekommt die die Auswahl beinhaltet...

Ich habe halt Angst das ich irgendwann einen Fundus von Dateien auf meinem Server vorfinde.

c4
03.02.2005, 12:34:11
Dann bau an den Anfang des Skriptes eine Schleife, die alle Dateien, die älter als n Tage sind löscht.

kaepten
03.02.2005, 12:37:11
Okay... Das sind alles Lösungen... aber keine wie ich sie mir vorstellte.

Ist es denn überhaupt möglich etwas ohne "speichern" zu "senden". Und es kommt als Datei an.

Geht es überhaupt nicht oder sind die anderen Lösungen nur leichter.

c4
03.02.2005, 12:41:57
Original geschrieben von kaepten
Ist es denn überhaupt möglich etwas ohne "speichern" zu "senden". Und es kommt als Datei an.

Geht es überhaupt nicht oder sind die anderen Lösungen nur leichter. Und was sagt Dir das? Niemand weiß es.

Unter http://php.net/header findest Du dieses Beispielskript: <?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?> Als Grundlage für Deine Versuche sicher nicht schlecht. Spiel damit mal ein wenig rum.

xabbuh
03.02.2005, 21:11:41
Original geschrieben von kaepten
Ist es denn überhaupt möglich etwas ohne "speichern" zu "senden". Und es kommt als Datei an.
Mir ist im Moment noch überhaupt nicht klar, ob du mit senden meinst, dass die Datei als Anlage einer Mail verschickt wird oder ob die Datei direkt heruntergeladen werden soll.

In beiden Fällen wäre es möglich zu verhinden, dass die Datei nach Ausführung des Scriptes noch auf dem Server liegt:
1. Du erstellst die Datei und speicherst sie auf dem Server. Direkt danach wird die Datei immer noch von dem gleichen Script als Anlage per Mail verschickt und anschließend wieder gelöscht.

oder:

2. Du nimmst c4s Beispiel. In diesem Fall musst du nicht einmal mehr eine Datei erstellen sondern ersetzt einfach die Zeile readfile('original.pdf') durch print $content, wobei $content den Text enthält, den die Datei enthalten soll.

kaepten
03.02.2005, 21:19:35
Herrlich...

Genau so habe ich mir das mit "on-the-fly" gedacht... wußte nur nicht wie man es anstellt...

Werde mir ds Beispiel mal ansehen und denke das ich es ab hier alleine schaffe.

Vielen Dank, kaepten

Nachtrag:

Das war natürlich unpräzise... ich meinte den zweiten Vorschlag.