2013-01-11 9 views
7

Ich möchte eine Datei per FTP-Upload in einem Formular hochladen. HierFTP-Upload über PHP-Formular

<html> 
    <body> 
    <form enctype="multipart/form-data" action="upload_file.php" method="POST"> 
     <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
     Choose a file to upload: <input name="uploadedfile" type="file" /><br /> 
     <input type="submit" value="Upload File" /> 
    </form> 
    </body> 
</html> 

ist die PHP-Datei:

<?php 

$ftp_server = "xxx"; 
$ftp_username = "xxx"; 
$ftp_password = "xxx"; 

// setup of connection 
$conn_id = ftp_connect($ftp_server) or die("could not connect to $ftp_server"); 

// login 
if (@ftp_login($conn_id, $ftp_username, $ftp_password)) 
{ 
    echo "conectd as [email protected]$ftp_server\n"; 
} 
else 
{ 
    echo "could not connect as $ftp_username\n"; 
} 

$file = $_FILES["file"]["name"]; 
$remote_file_path = "/home/www/lifestyle69/import/".$file; 
ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII); 
ftp_close($conn_id); 
echo "\n\nconnection closed"; 

?> 

Die FTP-Verbindung verbindet erfolgreich, aber die Datei ist nirgends.

Kann mir jemand helfen?

Danke!

+0

Welche Datenbank? Überprüfen Sie Ordner Berechtigungen sollten sie auf 777 – vodich

+0

Ups eingestellt werden, sorry. Ich wollte FTP-Verbindung schreiben. Aber es funktioniert nicht. – Raffinatore

+0

Was ist, wenn Sie ein größeres Formular haben, müssen Sie erneut eingeben?

? –

Antwort

6

Weil Sie <input name="uploadedfile" type="file" />:

$file = $_FILES["file"]["name"]; // wrong 
$file = $_FILES["uploadedfile"]["name"]; // right 

Da Sie den Dateinamen der temporären Kopie müssen von PHP gespeichert, die auf die existiert Server:

ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII); // wrong 
ftp_put($conn_id, $remote_file_path, $_FILES["uploadedfile"]["tmp_name"], 
     FTP_ASCII); // right 

Siehe PHP documentation für weitere Informationen über $ _FILES.

+0

Danke! Jetzt funktioniert es!! :) – Raffinatore

1

Sind Sie sicher, dass der Ordner, in den Sie hochladen, die richtigen Berechtigungen hat? Versuchen Sie es mit 777 und schauen Sie, ob das funktioniert.

+0

Danke, ja, aber es funktioniert nicht. Hast du andere Ideen? – Raffinatore

+2

Nur ein Vorschlag: Schlagen Sie niemals "Versuch, 777 zu chmodieren" ohne einen Haftungsausschluss "Tun Sie dies nur zum Testen. Stellen Sie es wieder auf sicherere Berechtigungen zurück, sobald Sie das Problem gefunden haben". – mmalmeida

+0

@mmalmeida Ich wundere mich darüber. Gibt es keine Berechtigungen auf dem Server hinter einer passwortgeschützten FTP-Verbindung? auch wenn ich einen 777-ordner auf meinem ftp-host habe, kann er nicht aus dem internet geschrieben werden, du musst beim server eingeloggt sein. –

1

Die Datei wird auf dem Server mit dem temporären Namen gespeichert. Wenn Sie also versuchen, die Datei $_FILES['file']['name'] hochzuladen, schlägt die Datei fehl, da die Datei mit diesem Namen nicht existiert. Stattdessen sollten Sie ftp_put() mit $_FILES['file']['tmp_name']

nennen erklärt Es ist ein wenig besser here

+0

Danke! Jetzt funktioniert es! :) – Raffinatore