selfhtml.de - Alles für den Webmaster!

 

Anzeige: united-domains - Die ganze Welt der Domains

united domains - jetzt Wunsch-Domain sichern!

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&#65533;&#65533;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&ouml;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>";

}