| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

09-06-2005, 09:25
|
|
bernina
Newbie
|
|
Registriert seit: Jun 2005
Beiträge: 24
|
|
Download per FTP schreibt auf dem Server???
Hallo zusammen,
ich versuche, Dateien per FTP vom Server auf eine lokale Maschine zu bekommen.
Mein Problem ist, dass die Dateien nicht auf dem Client geschrieben werden, sondern in das entsprechende Zielverzeichnis auf dem Server (falls es existiert, ansonsten gibt’s natürlich eine Fehlermeldung).
Die Datei „$source_file“ liegt auf dem Server und ist komplett mit Pfadangabe.
„$target_file“ habe ich (mittlerweile) soweit vereinfacht, dass ich dort einen festen Pfad (d:\download) angegeben habe und per „basename“ den reinen Dateinamen von „$source_file“ anhänge.
Ergebnis des Scriptes ist eine downgeloadete Datei im entsprechenden Verzeichnis der Servers und nicht des Clients.
Auch Versuche mit „ftp_pasv“ haben keine Verbesserung gebracht – wobei mir allerdings nicht klar ist, wie ich überprüfen kann, ob der Passivmodus nun wirklich aktiviert ist oder nicht (und ob das für mein Problem überhaupt relevant ist). Als Ergebnis der Funktion „ftp_pasv“ wird mir ja nur geliefert, OB der Befehl funktioniert hat, aber nicht der Status der Verbindung.
Irgendwelche Ideen dazu?
PHP-Code:
$conn_id = ftp_connect ($host);
$login_result = ftp_login ($conn_id, "anonymous", "");
// $passiv=ftp_pasv($conn_id, 1);
if ((!$conn_id) || (!$login_result))
{
echo "Ftp-Verbindung nicht hergestellt!";
echo "Verbindung mit $host als Benutzer $user nicht möglich";
die;
}
else
{
echo "<br>Verbunden mit \"$host\" als Benutzer \"$user\" <br> ";
}
$target_file="d:\\download\\" . basename($source_file);
$getload = ftp_get($conn_id, $target_file, $source_file, FTP_BINARY);
if (!$getload)
{
echo "Ftp get war fehlerhaft!";
}
else
{
echo "<br>Datei $source_file vom $host in das Verzeichnis $target_file geschrieben";
}
}
PHP: Version 5
Server OS: Windows
Für Tipps wäre ich dankbar!!
Grüße aus Köln
Jürgen
|

09-06-2005, 09:49
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
PHP-Code:
$target_file="d:\download\" . basename($source_file);
das sieht aber nach einem lokalen pfad aus.
setz den pfad mal so : \\name_des_clients\ordner
gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Geändert von Kropff (09-06-2005 um 09:53 Uhr)
|

09-06-2005, 10:21
|
|
bernina
Newbie
|
|
Registriert seit: Jun 2005
Beiträge: 24
|
|
Hallo Peter,
die Darstellung des PHP Codes hatte mich auch zuerst irritiert. Da werden offensichtlich diverse "\" gefiltert.
Fakt ist, dass das Script als solches funktioniert, also FTP connect, login, get - nur wird die Datei nicht auf den Client, sondern auf den Server geschrieben.
Gruß
Jürgen
|

09-06-2005, 10:38
|
|
mrhappiness
PHP Guru
|
|
Registriert seit: Oct 2002
Beiträge: 14.890
|
|
Re: Download per FTP schreibt auf dem Server???
Zitat:
Original geschrieben von bernina
ich versuche, Dateien per FTP vom Server auf eine lokale Maschine zu bekommen.
|
Und auf der lokalen Maschine läuft ein FTP-Server, zu dem du eine Verbindung aufbauen kannst?
Außerdem speichert man Daten auf einem FTP-Server mit ftp_put
Dein Skript baut die Verbindung zu einem FTP-Server auf und lädt eine Datei runter.
Die Datei wird auf dem PC gespeichert, auf dem auch der Webserver läuft.
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
|

09-06-2005, 11:00
|
|
bernina
Newbie
|
|
Registriert seit: Jun 2005
Beiträge: 24
|
|
Zitat:
|
Und auf der lokalen Maschine läuft ein FTP-Server, zu dem du eine Verbindung aufbauen kannst?
|
Nein, der FTP Server läuft gemeinsam mit dem Web- und dem PHP Server auf derselben Maschine.
Zitat:
|
Außerdem speichert man Daten auf einem FTP-Server mit ftp_put
|
Ich möchte die Datei nicht auf dem FTP Server, sondern auf dem Client speichern.
Zitat:
Dein Skript baut die Verbindung zu einem FTP-Server auf und lädt eine Datei runter.
Die Datei wird auf dem PC gespeichert, auf dem auch der Webserver läuft.
|
Wie kriege ich ihn dazu, die Datei auf dem anfragenden Client zu speichern? Das ist genau mein Problem.
Oder funktioniert die Installation von Web-, PHP- und FTP-Server auf derselben Maschine prinzipiell nicht?
Gruß
Jürgen
|

09-06-2005, 11:02
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Original geschrieben von bernina
Wie kriege ich ihn dazu, die Datei auf dem anfragenden Client zu speichern?
|
in dem du ihm diese zum download anbietest.
http://www.php-faq.de/q/q-datei-download.html
Zitat:
|
Oder funktioniert die Installation von Web-, PHP- und FTP-Server auf derselben Maschine prinzipiell nicht?
|
doch - aber was hat das mit deinem problem zu tun?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

09-06-2005, 11:53
|
|
bernina
Newbie
|
|
Registriert seit: Jun 2005
Beiträge: 24
|
|
Tja, manchmal sitzt man ja auf der Leitung...
Mir ist jetzt wenigstens schon mal klar geworden, dass ich mein Problem gar nicht per FTP lösen kann, weil der Server am falschen Ende läuft...
Zitat:
|
in dem du ihm diese zum download anbietest.
|
Danke für den Tipp. Auf die Seite war ich auch schon mal gestoßen, wollte mich aber damit nicht auseinander setzen. Das bleibt mir aber wohl doch nicht erspart. Die Funktionsweise ist mir nämlich momentan überhaupt noch nicht klar (deshalb hatte ich eine Lösung erst mal hier bei den Einsteigern gesucht....).
Ich werd' mich also jetzt mal mit diesen Headern beschäftigen. Mal sehen was dabei rauskommt.
|

09-06-2005, 13:35
|
|
bernina
Newbie
|
|
Registriert seit: Jun 2005
Beiträge: 24
|
|
Zitat:
|
in dem du ihm diese zum download anbietest.
|
Im Prinzip geht's.
Allerdings habe ich jetzt wieder das Problem, das ich eigentlich per FTP umgehen wollte. Mit der HEADER-Lösung kann ich jeweils nur eine Datei übertragen, wobei der Anwender dies auch jedesmal bestätigen muss (wie beim download mit <input>).
Ich möchte aber mehrere Dateien gleichzeitig ohne weitere Eingriffe des Anwenders downloaden. Die gewünschten Dateien hat der Anwender vorher per checkbox selektiert.
Da ich den Dateinamen, unter dem die Datei gespeichert werden soll, mitgebe, bräuchte ich nur die Möglichkeit, jedesmal die explizite Bestätigung zum Download zu unterbinden also quasi den Download im Hintergrund.
Geht das?
Vielleicht noch zur Erklärung:
Das Ganze spielt sich firmenintern ab. Es gibt also keine sicherheitstechnischen Bedenken bezüglich des Downloads. Die Anwender sollen innerhalb der Anwendung die Möglichkeit haben, Daten, die in einer DB2 gespeichert sind (und vor dem Download auf die Serverplatte geschrieben werden), als Datei auf ihren Rechner zu bekommen.
|

09-06-2005, 13:57
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.759
|
|
Firmenintern sollte es mit den File-funktionen von PHP möglich sein sofern dies nicht durch irgendwelche Sicherheitseinstellungen unterbunden wird. Allerdings darfst in diesem Script keine Festplatte direkt mit D:\... ansprechen, so bleibst immer auf dem Rechner auf dem das Skript läuft, sondern so wie es Kropff bereits gesagt hat:
\\name_des_clients\freigabename_der_platte\verzeichnis
Mit FTP wirst nix erreichen, da kannst du dich auf den Kopf stellen, außer du installierst bei allen Clients nen FTP-Server.
|

09-06-2005, 14:03
|
|
ankh
Member
|
|
Registriert seit: May 2005
Beiträge: 304
|
|
Zitat:
Original geschrieben von Quetschi
Mit FTP wirst nix erreichen, da kannst du dich auf den Kopf stellen, außer du installierst bei allen Clients nen FTP-Server.
|
stümmt... klingt aber komisch, wenn man's so liest...
|

09-06-2005, 14:04
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.759
|
|
OffTopic: klingt komisch, is aber so 
|

09-06-2005, 14:17
|
|
bernina
Newbie
|
|
Registriert seit: Jun 2005
Beiträge: 24
|
|
Zitat:
|
Mit FTP wirst nix erreichen, da kannst du dich auf den Kopf stellen, außer du installierst bei allen Clients nen FTP-Server
|
Tja, das hatte ich dann mit zwei weinenden Augen auch erkannt...
Zitat:
|
\\name_des_clients\freigabename_der_platte\verzeichnis
|
Hier freigabename_der_platte ist dann wieder die Stelle, die ich eigentlich vermeiden wollte. Das ganze sollte möglichst einfach für den Anwender (also kein IT Support, der vorher bestimmte Laufwerke freigibt, Programme installiert o.ä.) abgehen: Einfach Browser starten und ohne weitere Eingriffe von außen arbeiten können...
|

09-06-2005, 14:23
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.759
|
|
Ganz hab ich zwar noch ned verstanden was überhaupt erreicht werden soll, aber:
Ohne ein freigegebenes Laufwerk auf dem Client-rechner wirds glaub ich ned gehen, korrigiert mich bitte falls es anders auch ginge.
Zitat:
|
Einfach Browser starten und ohne weitere Eingriffe von außen arbeiten können...
|
der User soll vom Client-PC aus den Browser aufrufen, dann auf nen Link klicken oder ein Form ausfüllen und daraufhin soll dass Script irgendwas das aus ner DB kommt bei ihm auf die Platte schreiben, kommt das ungefähr hin?
|

09-06-2005, 14:35
|
|
bernina
Newbie
|
|
Registriert seit: Jun 2005
Beiträge: 24
|
|
Zitat:
|
der User soll vom Client-PC aus den Browser aufrufen, dann auf nen Link klicken oder ein Form ausfüllen und daraufhin soll dass Script irgendwas das aus ner DB kommt bei ihm auf die Platte schreiben, kommt das ungefähr hin?
|
Der User kann (soll können) per checkbox diverse Dateien anklicken, um sie auf seiner lokalen Platte abzuspeichern ohne für jede Datei noch mal gefragt zu werden, ob er wirklich möchte...
Die Inhalte der Dateien befinden sich zum Zeitpunkt der Selektion noch in einer DB2 (deshalb auch kein direkter Zugriff auf die Daten einfach übers Netzwerk).
Nach dem submit durch den User werden die Dateien auf dem Server generiert und zum User übertragen. So die Idee...
|

09-06-2005, 14:37
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.759
|
|
Und diese User haben allesamt keine freigegebenen Laufwerke?
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|