Seite 1 von 1

Hat denn keiner Ahnung von PHP ???

BeitragVerfasst: So 17. Jun 2001, 11:21
von Fasse
Ich habe folgendes Problem:
Ich habe ein Formular, was mittels des Submitbuttons eine PHP-Seite aufruft. Diese Seite verarbeitet die Daten und erstellt eine Datei.
Allerdings kann ich diese Datei nur auf dem Server speichern. Das ist zu Hause ja kein Problem, da ich schreibrechte habe, aber im Internet geht das nicht.

Meine Frage nun:
Wie kann ich es programmieren, dass die Datei auf dem Computer des Anwenders gespeichert wird ???

BeitragVerfasst: Mo 13. Aug 2001, 12:13
von hetfield
Bitte Keine Werbung zu Anderen Boards

BeitragVerfasst: Mo 13. Aug 2001, 15:23
von magus
@Freaky:

gar nicht.

Du kannst zwar Serverseitig arbeiten, aber Dateien auf dem Rechner des jeweiligen Nutzers speichern geht nicht bzw. nur in Form von Cookies.

Denn Du eigenen Speicherplatz im Netz hast, dann kannst Du doch auch die Schreibrechte ( CHMOD ) auf dem Server ändern und damit die Daten auch speichern.

BeitragVerfasst: Mo 13. Aug 2001, 15:48
von Krautwiggerl
Du kannst uploads auf den Server mit "copy" machen, aber andersrum is nich.

in etwa geht sowas schon

BeitragVerfasst: Mo 10. Sep 2001, 19:14
von Schlimmer
Du kannst nicht das Speichern auf der Festplatte des Besuchers erzwingen, aber eine Datei (auch wenn sie per Skript erzeugt wird) schicken kannst Du schon:

Wichtig ist dabei, dass das PHP-Skript selbst sonst keinen Output gibt und das die header()-Befehle am Anfang des Skripts stehen, sonst meckert PHP (ist so, also ob Du einen Cookie mitten in der Ausgabe versenden willst).

Also: Mit der Zeile

header('Content-type: application/stream-octet');

gibst Du an, dass kein HTML- sondern ein anderer Output kommt. Der Browser des Besuchers wird daraufhin den Download-Dialog öffnen. Es steht Dir frei einen anderen passenden MIME-Type zu verwenden. Da kann es dann aber passieren, dass bei z.B. Word-Dokumenten der Browser das Dokument in seinem Fenster darstellt, statt den Download anzubieten.

Weisst Du, wie gross die Datei ist (kannst Du mit filesize() ermitteln, falls es sich um eine physikalisch vorhandene Datei handelt), dann baue die folgende Zeile in das Skript ein:
header('Content-Length: xxx'), wobei Du bei xxx die Dateigrösse angeben musst.
Dies hat den Vorteil, dass der Downloaddialog einen Fortschrittsbalken anzeigen kann.

Falls es sich um eine physikalisch vorhandene Datzei handelt öffnest Du nun noch die Datei...
$file = fopen('blalblabla.txt', 'r');

...und schickst sie mit
fpassthru($file);
ab.

fclose() kannst Du machen oder Dir auch schenken, da das nach Skriptdurchlauf automatisch passiert.

So etwas gehört eigentlich zu den Standardingen, die oft nachgefragt werden. Du findest im Internet einen ganzen Haufen Seiten, die sich mit wiederkehrenden Programmieraufgaben bzgl. PHP befassen.
Ganz gut z.B.: http://www.phpwelt.de/

BeitragVerfasst: Di 18. Sep 2001, 13:23
von Commander
@All

Ich hab Ahnung von Php und Cgi usw....

Commander:s11:

BeitragVerfasst: Sa 22. Sep 2001, 15:54
von Krautwiggerl
@schlimmer:
aber du hast dann immer noch das Problem, dass der Client den Download nicht annehmen muss.
Die Möglichkeit mit dem Header kenne ich auch:

header("Content-disposition: inline; filename=datei.zip");
header("Content-type: application/x-tar");
readfile("datei.zip");
exit();
break;

Natürlich lassen sich auch andere Datei-Formate ausser ZIP schicken, man muss nur den MIME-Type entsprechend verändern.

BeitragVerfasst: Di 2. Okt 2001, 11:30
von LeChuckie
aprops PHP ich bin Anfänger und bis jetzt genügt mir das was ich kann. Ich hab mir das Tuturial von webmaster-resource.de reingezogen. Wo gibt es denn ein gutes für Fortgeschrittene!

BeitragVerfasst: Mi 24. Okt 2001, 21:47
von Fasse
@Schlimmer: Das war genau das was ich gesucht habe, werds mal ausprobieren, vielen Dank :s3: