Bellerophon
25-05-2004, 15:47
Hallo,
ich hab ein kleines Script geschrieben, mit dem via FTP Dateien auf einen Server gepackt werden sollen. Das funktioniert auch eigentlich, leider klappt bei der Übergabe der Form-Variablen etwas nicht. Undzwar erhällt PHP aus der "<Input type='file' ...>" nur den Dateinamen, nicht den lokalen Pfad. Deshalb findet das Script die Datei dann auch nicht! In einigen Tutorial (Selfhtml usw...) wird empfohlen, den enctype auf multipart/form-data zu setzen. Dann erhällt PHP gar nichts mehr aus der Datei... Hier erstmal mein Script:
<HTML>
<BODY>
<FORM action="ftp_put.php" method="post" enctype="multipart/form-data">
<INPUT type="file" size="100" name="filetoput"><BR>
<INPUT type="submit" value="upload">
</FORM>
</BODY>
</HTML>
<?PHP
$filetoput=$_POST[filetoput];
if ($filetoput <>" ") {
$my_user="XXXXX";
$my_pwd="XXXXX";
$my_host="XXX.XXX.XXX.XX";
$ftp = ftp_connect($my_host);
if ( ! $ftp) {
echo "Keine Verbindung zum Host <b>".$my_host."</b><br>";
}
else {
$res = @ftp_login($ftp,$my_user,$my_pwd);
if (! $res) {
echo "Login als <b>".$my_user."</b> nicht möglich!<br>";
}
}
$wheretoput="/www/htdocs/test/daten/".basename($filetoput);
// Hier geb ich die Variablen mal testweise aus. Ohne enctype="multipart/form-data"
// kommt hier wenigstens der Dateiname von $filetoput raus... Mit kommt garnichts!!!
echo $ftp."<br>".$wheretoput."<br>".$filetoput;
ftp_put($ftp,$wheretoput,$filetoput,FTP_BINARY);
ftp_quit($ftp);
}
else {
echo "Ein fehler ist aufgetreten";
}
?>
Als Fehlermeldung gibt mir PHP ftp_put(): error opening bla bla weil er die Datei nicht findet. Wenn ich der Variable $filetoput den noch den richtigen Pfad mitgebe, funktionierts. Aber das kann ja nicht die Lösung sein... Im Formular (also auf der Seite) ist der Pfad auch noch da (z.B. c:/test.txt oder /home/xxx/test.txt) die Variable spuckt aber nur test.txt aus. Mir kommt das vor, als wäre hier ein basename($filetoput) am werke, welches hier aber nirgendwo steht...
Vielleicht hat ja jemand von euch ne Idee woran das liegen könnte??? Ich verzweifel gerade!
Danke im Vorraus
Thomas
ich hab ein kleines Script geschrieben, mit dem via FTP Dateien auf einen Server gepackt werden sollen. Das funktioniert auch eigentlich, leider klappt bei der Übergabe der Form-Variablen etwas nicht. Undzwar erhällt PHP aus der "<Input type='file' ...>" nur den Dateinamen, nicht den lokalen Pfad. Deshalb findet das Script die Datei dann auch nicht! In einigen Tutorial (Selfhtml usw...) wird empfohlen, den enctype auf multipart/form-data zu setzen. Dann erhällt PHP gar nichts mehr aus der Datei... Hier erstmal mein Script:
<HTML>
<BODY>
<FORM action="ftp_put.php" method="post" enctype="multipart/form-data">
<INPUT type="file" size="100" name="filetoput"><BR>
<INPUT type="submit" value="upload">
</FORM>
</BODY>
</HTML>
<?PHP
$filetoput=$_POST[filetoput];
if ($filetoput <>" ") {
$my_user="XXXXX";
$my_pwd="XXXXX";
$my_host="XXX.XXX.XXX.XX";
$ftp = ftp_connect($my_host);
if ( ! $ftp) {
echo "Keine Verbindung zum Host <b>".$my_host."</b><br>";
}
else {
$res = @ftp_login($ftp,$my_user,$my_pwd);
if (! $res) {
echo "Login als <b>".$my_user."</b> nicht möglich!<br>";
}
}
$wheretoput="/www/htdocs/test/daten/".basename($filetoput);
// Hier geb ich die Variablen mal testweise aus. Ohne enctype="multipart/form-data"
// kommt hier wenigstens der Dateiname von $filetoput raus... Mit kommt garnichts!!!
echo $ftp."<br>".$wheretoput."<br>".$filetoput;
ftp_put($ftp,$wheretoput,$filetoput,FTP_BINARY);
ftp_quit($ftp);
}
else {
echo "Ein fehler ist aufgetreten";
}
?>
Als Fehlermeldung gibt mir PHP ftp_put(): error opening bla bla weil er die Datei nicht findet. Wenn ich der Variable $filetoput den noch den richtigen Pfad mitgebe, funktionierts. Aber das kann ja nicht die Lösung sein... Im Formular (also auf der Seite) ist der Pfad auch noch da (z.B. c:/test.txt oder /home/xxx/test.txt) die Variable spuckt aber nur test.txt aus. Mir kommt das vor, als wäre hier ein basename($filetoput) am werke, welches hier aber nirgendwo steht...
Vielleicht hat ja jemand von euch ne Idee woran das liegen könnte??? Ich verzweifel gerade!
Danke im Vorraus
Thomas