2016-12-14 5 views
2

Unten Code nimmt Datei von HTML-Formular und speichert temporäre Datei in lokalen Temp-Ordner, kann aber nicht auf den Server hochladen. Der Server wird den Upload vom FTP-Client durchführen, aber der unten stehende PHP-Code gibt "Kann nicht hochladen" zurück. Problem mit $ destDir? Verzeichnis existiert auf dem Server ... jede Hilfe wird geschätzt.Datei mit PHP und FTP hochladen, wo ist mein Fehler?

<?php 
// set up basic connection 
$ftp_server = "ftp.rf.gd"; 
$ftp_user_name = "rfgd_19026557"; 
$conn_id = ftp_connect($ftp_server); 
$pass="fakepass"; 
// login with username and password 
$login_result = ftp_login($conn_id, $ftp_user_name, $pass); 
//test if the connection is successful 
echo '<center>'; 
$conn_id = ftp_connect($ftp_server); 
if (!$conn_id) 
    echo '<div style="background-color:red;padding:10px;color:#fff;font-size:16px;"> 
    Couldn\'t connect to <b>' . $ftp_server . '</b></div>'; 
else 
    echo '<div style="background-color:green;padding:10px;color:#fff;font-size:16px;"> 
    Connected to <b>' . $ftp_server . '</b></div>'; 
ftp_pasv($conn_id, true); // turns on passive mode 
// upload a file 
$destDir = "Business/pics"; 
$workDir = "C:\Apache24\htdocs\Images"; // define this as per local system 
// get temporary file name for the uploaded file 
$tmpName = basename($_FILES["fileToUpload"]['tmp_name']); 
// copy uploaded file into current directory 
move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $workDir."/".$tmpName) or die("Cannot move uploaded file to working directory"); 

//Code above this point works 

// perform file upload 
$upload = ftp_put($conn_id, $destDir."/".$_FILES['fileToUpload']['name'], $workDir."/".$tmpName, FTP_BINARY); 
// check upload status 
// display message 
if (!$upload) { 
    echo "Cannot upload"; 
} else { 
    echo "Upload complete"; 
} 
// close the connection 
ftp_close($conn_id); 
// delete local copy of uploaded file 
//unlink($workDir."/".$tmpName) or die("Cannot delete uploaded file from working directory — manual deletion recommended"); 
?> 
+0

Haben Sie die Berechtigungen haben ausgehenden Datenverkehr zu initiieren? –

+0

Ich starte von der Browser-Adresse http: //localhost/upload.html, die nach der Dateieingabe fragt und die folgende php-Datei aufruft. gleicher Ordner (htdocs). Was würde ich tun, um nach Erlaubnis zu fragen, auszugehen? –

+0

Hoppla, habe meinen Fehler gefunden. Nach dem Verbinden definiere ich $ conn_id = ftp_connect ($ ftp_server) erneut, was im Wesentlichen die Verbindung trennt. Entschuldigung für die Mühe und danke für die Hilfe. Jeff –

Antwort

2
$trackErrors = ini_get('track_errors'); 
ini_set('track_errors', 1); 
if ([email protected]_put($conn_id, $destDir."/".$_FILES['fileToUpload']['name'], $workDir."/".$tmpName, FTP_BINARY)) { 
    // error message is now in $php_errormsg 
    $msg = $php_errormsg; 
    ini_set('track_errors', $trackErrors); 
    throw new Exception($msg); 
} 
+0

Connected to ftp.rf.gd

Warnung: ftp_put() [function.ftp-put]: Sie sind in C nicht angemeldet: \ Apache24 \ htdocs \ newupload.php on line

Fatal error : Uncaught Ausnahme: ftp_put() [< a href = '/ phpmanual/function.ftp-put' > function.ftp-put </a >]: Sie sind nicht in C: \ Apache24 \ htdocs \ newupload angemeldet. php: 35 Stapelspur: # 0 {main} in C geworfen: \ Apache24 \ htdocs \ newupload.php on line –

+0

Grundfehler: "Du bist nicht angemeldet" Klar habe ich in zum FTP-Server angemeldet, wie Sie kann die "Verbunden mit ftp.rf.gd. in der Ausgabe. Muss ich mich auch auf meinem lokalen Apache-Server anmelden, um die HTML-Datei auszuführen, die mein PHP-Skript aufruft? Kann online nichts darüber finden. Danke, Jeff –