FTP Upload
Steffen Richter
- php
Hallo!
Ich will einen FTP Upload via PHP machen. Aber das funktioniert nicht. Die Verbindung zum FTP Server geht. Meldet sich auch richtig an. Aber der ftp_put Befehl funktioniert nicht. Bekomm aber auch keine Fehlermeldung.
Muß ich beim remote Verzeichnis vom Root ausgehen oder von dem Verzeichnis wo ich grad bin?
Gruß
Steffen
Hallo Steffen,
ftp_put() returnt false im Falle des Misslingens. Wenn echo ftp_put(...) also kein Ergebnis bringt, dann ist das bereits eine Fehlermeldung, ansonsten wuerde da 1 stehen. Du musst zunaechst in das Zielverzeichnis wechseln und dort auch Schreibrechte haben. Spiel mal das Beispiel aus dem Handbuch fuer ftp_login() durch und erweitere es um ftp_ch_dir() und ftp_put(), dann kriegst Du auch vernuenftige Meldungen.
<?php
$ftp_server = "ftp.example.com";
$ftp_user = "foo";
$ftp_pass = "bar";
// set up a connection or die
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
// try to login
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
echo "Connected as $ftp_user@$ftp_server\n";
} else {
echo "Couldn't connect as $ftp_user\n";
}
?>
Dieter
Hier ist mal das ganze Skript. Das Verzeichnis pics existiert mit allen Rechten chmod (777).
Die Ausgabe ist unter: www.kraemer-elektronik.com/test.php
Vielleicht hilft das weiter. Das komische ist, das ich das schonmal gemacht habe und da funktioniert das ohne Probleme.
<html>
<body>
<form action="test.php" method="post" enctype="multipart/form-data">
<input type="file" name="bild1" accept="image/*">
<input type="submit" value="Test">
</form>
<?php
include("conf.php");
$test = $HTTP_POST_VARS[bild1];
$test2 = str_replace("\", ":", $test);
$test1 = split(":", $test2);
$count = count($test1);
$name = $test1[$count-1];
$pfad1="./pics/$name";
echo "Name:$name<br>Pfad:$HTTP_POST_VARS[bild1]<br>";
$connection_id = ftp_connect("$ftp_server");
$login_result = ftp_login($connection_id,"$benutzername","$passwort");
# if (!is_dir("./pics"))
# {
# $dir=split("/", "./pics");
# $path="";
# $ret = true;
# for ($i=1;$i<count($dir);$i++)
# {
# $path.="/".$dir[$i];
# if(!@ftp_chdir($connection_id,$path)){
# @ftp_chdir($connection_id,"/");
# if(!@ftp_mkdir($connection_id,$path)){
# $ret=false;
# }
# }
# }
# }
if($login_result)echo "Verbindung hergestellt<br>";
echo "$pfad1<br>$bild1";
$asd1 = ftp_put($connection_id, $pfad1, $bild1, FTP_BINARY);
echo "$asd1";
ftp_quit($connection_id);
?>
</body>
</html>
Hallo,
Was Du hier versuchst ist ein Upload mit HTTP, nicht FTP. Zudem enthaelt das Script massig Fehler.
Aber mal der Reihe nach:
Ich nehme in dem Beispiel mal an, du wolltest C:\bild.jpg hochladen.
<form action="test.php" method="post" enctype="multipart/form-data">
$test = $HTTP_POST_VARS[bild1];
)
$test2 = str_replace("\", ":", $test);
Dieter