Anzeige: united-domains - Die ganze Welt der Domains
Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.
Jetzt Domain-Check bei united-domains!
UPLOAD via FTP
Autor: Francesco
Datum: 10.09.2011 19:02:46
Hallo @ all,
hab ein kleines Problem mit upload via FTP vielleicht sieht jemand den Fehler.
index.php :
------------------------------------------------------------
<html>
<head></head>
<body>
<h2>Please provide the following information:</h2>
<form enctype="multipart/form-data" method="post" action="upload.php">
<input type="hidden" name="MAX_FILE_SIZE" value="5000000" />
Host <br/>
<input type="text" name="host" value="xxxxxx" /><p />
Username <br />
<input type="text" name="user"  value="xxxxxx"/><p />
Password <br />
<input type="password" name="pass" value="xxxxxx" /><p />
File <br />
<input type="file" name="file" /><p />
<input type="submit" name="submit" value="Upload File" />
</form>
</body>
</html>
------------------------------------------------------------
upload.php :
------------------------------------------------------------
<?php
// get FTP access parameters
$host = $_POST['host'];
$user = $_POST['user'];
$pass = $_POST['pass'];
$filename = $_FILES['file']['name'];
$destDir = "/array1/conti/xxxx/";
echo "destination dir : ".$destDir."<br>";
echo "Filename : ".$filename."<br>";
echo "Datei incl. pfad : ".$filepath.$filename."<br>";
echo "Upload destinatio und datei : ".$destDir.$_FILES['file']['name'];
// open connection
$conn = ftp_connect($host) or die ("Cannot initiate connection to host");
// send access parameters
ftp_login($conn, $user, $pass) or die("Cannot login");
// perform file upload
$upload = ftp_put($conn, $destDir.$_FILES['file']['name'], $filename, FTP_ASCII);
// check upload status and display message
if (!$upload) {
echo "Cannot upload";
} else {
echo "Upload complete";
}
// close the FTP stream
ftp_close($conn);
?>
------------------------------------------------------------
folgende Meldung erhalte ich:
Warning: ftp_put(destDirallcss2.zip) [function.ftp-put]: failed to open stream: No such file or directory in /mnt/array1/web/htdocs/upload/upload.php on line 21
ALSO in LINE 21
$upload = ftp_put($conn, $destDir.$_FILES['file']['name'], $filename, FTP_ASCII);
Fehler erkannt: im Verzeichnis wo die upload.php liegt,  existiert keine Datei mit dem Namen : destDirallcss2.zip. liegt liegt auf meinem Rechner im Verzeichnis d:tmp
$_POST['file'] übergibt nur den Namen ohne PFAD und das ist mein Problem aber wie löse ich das Problem.
Hat jemand eine Idee?
mfg
Francesco
Re: UPLOAD via FTP
Autor: T.Jung
Datum: 12.09.2011 11:56:06
> hab ein kleines Problem mit upload via FTP
> vielleicht sieht jemand den Fehler.
Also, erstmal -- aus Deiner Beschreibung kann ich leider nich erkennen, ob Dir das bewusst ist:
Du kannst mit den FTP-Funktionen von PHP keine Dateien von Deiner lokalen Platte auf einen entfernten Server hochladen. Du musst die Datei also _erst_ per HTTP-Upload auf den Server übertragen, anschließend kannst Du sie dann mit den FTP-Funktionen auf einen anderen Server übertragen.
Der Upload via HTTP wird z.B. hier beschrieben:
http://www.php-faq.de/q-formular-upload-php4.html
Wenn die Datei innerhalb des gleichen Servers in ein anderes Verzeichnis übertragen werden soll, brauchst Du ebenfalls keine FTP-Funktionen, sondern kannst auf Funktionen des Dateisystems zurückgreifen, wie move_uploaded_file().
http://de.php.net/manual/de/function.move-uploaded-file.php
So, dann gibt es natürlich noch die Möglichkeit, dass PHP bei Dir lokal läuft, etwa innerhalb einer XAMPP-Umgebung.
Auch dann funktioniert es im Prinzip wie oben gesagt: Erst HTTP-»Upload« in den Bereich Deiner Festplatte, der PHP zugänglich ist, dann per FTP auf den eigentlichen Zielserver.
In diesem Fall ist es wichtig, dass als Quelldatei nicht $_FILES['file']['name'], sondern $_FILES['file']['tmp_name'] notiert werden muss. Wegen des genannten Pfades (/mnt/array1/web/htdocs/upload) gehe ich aber davon aus, dass das bei Dir nicht der Fall ist, so dass wohl der erste Link die für Dich richtige Lösung darstellt.
HTH,
Tobias Jung
Re: UPLOAD via FTP
Autor: Francesco
Datum: 15.09.2011 00:00:29
Vielen Dank für die Hilfe,
folgendes hab ich nun umgebaut:
Ergebnis vom script:
hier DATEINAME : 000.doc
hier TEMPNAME : /mnt/ram/phptu1NmS
Original-Dateiname : 000.doc
Tempname : /mnt/ram/phptu1NmS
Datei-Typ : application/msword
Datei-Gr��e : 45056 Bytes
Fehlercode : 0
Ziel :/array1/conti/xxxxx
Ziel :/array1/conti/xxxxx/000.doc
selbst hierbei bleibt mein Verzeichnis Leer. TMP Datei wird angelegt befinde mich auch im richtigen Verzeichnis.
USER hat volle Rechte wurde mit Filezilla gerpüft.
Ziel hab ich in 4 Modi ausprobiert
Ziel :
Ziel : /
Ziel :/array1/conti/xxxxx
Ziel :/array1/conti/xxxxx/000.doc
aber jedes mal wurde keine Datei geschrieben. PHP liefert auch kein Fehler. Was mache ich noch falsch?
Abschnitt Formulardaten OK
if(!$ERRORMESSAGE && !$send) {
//...
$ftpconnect = ftp_connect($ftp_host);
if ($ftpconnect){
$message = "Verbindung zum HOST erfolgreich aufgebaut";
}else{
$message = "Verbindung zur Buffalo Linkstation fehlerhaft<br/>"; die ("<fieldset><legend>".DETAIL_Server."</legend><div>".$message."</div></legend></fieldset>");
}
$login_result = ftp_login($ftpconnect, $ftp_user, $ftp_pwd);
if ($login_result)
$message .= " und als FTP USER erfolgreich angemeldet";
// try to change the directory to continentale
if (ftp_chdir($ftpconnect, $ftp_path.$getdirlocation)) {
$message .= "<br />Current directory is now: " . ftp_pwd($ftpconnect) . "<br />";
} else {
echo "Couldn't change directory<br />";
}
echo "<fieldset><legend>".DETAIL_Server."</legend><div align=center>".$message."</div></legend></fieldset>";
echo "hier DATEINAME : ".$_FILES['dname']['name']."<br>";
echo "hier TEMPNAME : ".$_FILES['dname']['tmp_name']."<br>";
if($_FILES['dname']['tmp_name']){
echo "Original-Dateiname : ".$_FILES['dname']['name']."<br>";
echo "Tempname : ".$_FILES['dname']['tmp_name']."<br>";    echo "Datei-Typ : ".$_FILES['dname']['type']."<br>";
echo "Datei-Größe : ".$_FILES['dname']['size']." Bytes<br>";
echo "Fehlercode : ".$_FILES['dname']['error']."<br>";
$str_ziel = $_FILES['dname']['name'];   
                   
echo "Ziel :". ftp_pwd($ftpconnect)."<br>";
echo "Ziel :". ftp_pwd($ftpconnect)."/".$str_ziel."<br>";
$upload = move_uploaded_file($_FILES['dname']['tmp_name'], $str_ziel);
// Upload-Status überprüfen
if ($upload) {
  echo "<P>Ftp upload war fehlerhaft!</P>";
} else {
echo "<P>Datei". $_FILES['dname']['tmp_name'] ."auf ".$ftp_host ." in das Verzeichnis <br>: ". $str_ziel." geschrieben</P>";
}
// Schließen der Verbindung
ftp_quit($ftpconnect);
}
Re: UPLOAD via FTP
Autor: Francesco
Datum: 16.09.2011 21:23:20
Vielen Dank für die Hilfe, hab das Problem gelöst.
Hier meine Lösung:
if(!$ERRORMESSAGE && !$send) {
$tbldcid = $custermerid;
$tblddate = date('t.m.Y');
$tbldcat = $_POST['dcat'];
$tbldname = $_POST['dname'];
$tbldavaileble = $_POST['davaileble'];
$tbldmemo = $_POST['dmemo'];
insertdocument($tbldcid,$tblddate,$tbldcat,$tbldname,$tbldavaileble,$tbldmemo);
$selectcat = 'NULL';
                $upload = move_uploaded_file($_FILES['dname']['tmp_name'], $ftp_temp.$_FILES['dname']['name']);
$ftpconnect = ftp_connect($ftp_host);
if ($ftpconnect){
$message = "Verbindung zum HOST erfolgreich aufgebaut";
}else{
$message = "Verbindung zur Buffalo Linkstation fehlerhaft<br/>";
die ("<fieldset><legend>".DETAIL_Server."</legend><div>".$message."</div></legend></fieldset>");
}
$login_result = ftp_login($ftpconnect, $ftp_user, $ftp_pwd);
if ($login_result)
$message .= " und als FTP USER erfolgreich angemeldet";
// try to change the directory to continentale
if (ftp_chdir($ftpconnect, $ftp_path.$getdirlocation)) {
$message .= "<br />Current directory is now: " . ftp_pwd($ftpconnect) . "<br />";
} else {
echo "Couldn't change directory<br />";
}
if($_FILES['dname']['tmp_name']){
$tempdir = $ftp_temp.$_FILES['dname']['name'];
$destdir = ftp_pwd($ftpconnect)."/".$_FILES["dname"]["name"];
// Upload-Status überprüfen
ftp_put($ftpconnect, $destdir, $tempdir, FTP_BINARY);
$message .= "Datei wurde hochgeladen".$destdir."<br />";
// Lösche Dateim Temp Verzeichnis
unlink($tempdir);
$message .= "Tempdatei wurde vom Server gelöscht ".$tempdir."<br />";
// Schließen der Verbindung
ftp_quit($ftpconnect);
$message .= "FTP-Connection wurde geschlossen<br />";
      echo "<fieldset><legend>".DETAIL_Server."</legend><div align=center>".$message."</div></legend></fieldset>";
}