Antworten auf deine Fragen:
Neues Thema erstellen

Upload Script fehlerhaft

SWFP

SWFP Mitglied

Hi,

ich habe folgendes Script:

PHP:
<?php
// Diese Variablen bitte ändern
$ftp_server = "bunte-ecke.bplaced.net";
$benutzername = "bunte-ecke_test";
$passwort = "*******";

// Die Verbindung herstellen
$connection_id = ftp_connect($ftp_server) or die("Konnte keine Verbindung zu $ftp_server aufbauen");

// Mit Benutzername und Kennwort anmelden
$login_result = ftp_login($connection_id, $benutzername, $passwort);

// überprüfen ob alles gutgegangen ist
if ((!$connection_id) || (!$login_result)) {
        echo "<H1>Ftp-Verbindung konnte nicht hergestellt werden!<H1>";
        echo "<P>Verbindung mit ftp_server als Benutzer $benutzername nicht möglich! Bitte ueberpruefen Sie Ihre Eingaben!</P>";
        die;
} else {
        echo "<P>Verbunden mit ftp_server als Benutzer $benutzername</P>";
}

// Die aus dem Forumular übergebenen Daten abfragen
$zieldatei = $_POST['zieldatei'];
$lokale_datei = $_POST['lokale_datei'];

// Hochladen der Datei
$upload = ftp_put($connection_id, $zieldatei, $lokale_datei, FTP_ASCII);

// Upload-Status überprüfen
if (!$upload) {
        echo "<P>Ftp upload war fehlerhaft!</P>";
} else {
        echo "<P>Datei $slokale_datei auf $host als $zieldatei geschrieben</P>";
}

// Schließen der Verbindung
ftp_quit($connection_id);
?>

Einloggen und starten funktioniert bereits einwandfrei. Beim Hochladen kommt dann aber der Fehler.

Warning: ftp_put() [function.ftp-put]: Filename cannot be empty in /users/bunte-ecke/www/Bunte Ecke/Test-Ecke/PHP Upload/verarbeitung.php on line 27

Das Passwort ist zwar richtig, habe es verständlicherweise unkenntlich gemacht.
 

G

Ghaengi

Guest

AW: Upload Script fehlerhaft

Hallo SWFP,

von der Fehlermeldung her, sieht es so aus als wenn du in deinem Pfad für die Zieldatei, den Dateinamen nicht mit angegeben hast.

Da ich leider nicht genau weiß was du bei deinem Formular alles mit übergibst, kann ich das nicht genau sagen, aber wenn du nur den Pfad angibst in welchen Ordner du die Datei auf deinem Server speichern willst, solltest du noch den Dateinamen dahinter schreiben.

ggf. reicht es schon wenn du von der Lokalen Datei einfach den Namen nimmst, dies könntest du evtl. so umsetzen.

PHP:
$zieldatei    = $_POST['zieldatei']; 
$lokale_datei = $_POST['lokale_datei'];

$zieldatei   .= "/" . end( explode( "/", $lokale_datei ) );

Ich hoffe ich konnte dir weiterhelfen ^^ wenn es nicht klappen sollte, kannst du ja noch einmal den inhalt deiner Variablen nachgucken und ggf. hier Posten ;)

Viele Grüße
 

netbandit

Aktives Mitglied

AW: Upload Script fehlerhaft

Sollte Dein Formular Multipart/Form-Data und Dein Inputfeld vom Typ file sein, müsstest Du die Daten der lokalen Datei via $_FILES anstelle von $_POST ansprechen.

Grüße :)
 

Sorc

Nicht mehr ganz neu hier

AW: Upload Script fehlerhaft

Hi,
den Upload wie du ihn realisieren willst ist doppelt gemoppelt. PHP arbeitet Serverseitig. Wenn du also ein Datei auswählst, wird sie per PHP hochgeladen. Da ist ftp dann unnütz. Ftp mit PHP ist nur Sinnvoll um Daten von dem Webserver auf einen anderen Server zu kopieren. Ich denke mal dir geht es darun große Dateien hoch zu laden. Das hatte ich auch gedacht aber es stellte sich schnell eine ernüchterung ein.
 

shadownight

Nicht mehr ganz neu hier

AW: Upload Script fehlerhaft

Hi
Versuch doch mal so in der Art
Code:
$tempname = $_FILES[filename']['tmp_name'];  
$name = $_FILES['filename']['name'];  
$type = $_FILES['filename']['type'];  
$size = $_FILES['filename']['size'];  
if($type != "Dateitype" && $type != "Dateitype2" && $type != "Dateitype3") {  
    $err[] = "nur ... und...Dateien dürfen hochgeladen werden.";  
}  
if($size > "2048000") {  
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 2 MB!";  
}  
if(empty($err)) {  
    move_uploaded_file($tempname, "/Dein verzeichniss/Dein unterverzeichniss");  
}  
else {  
    foreach($err as $error)  
    echo "$error<br>";  
}

Hoffe konnte dir helfen
 

SWFP

SWFP Mitglied

AW: Upload Script fehlerhaft

Hi,

tut mir leid, dass ich euch so lange auf meine Antwort habe warten lassen.

@Ghaengi: Weder mit, noch ohne Dateinamen funktioniert es. Auch wenn ich deine Variante dort einfüge. Hier noch einmal den Code des Formulars:

Code:
<html>
<head>
<title>Datei Upload</title>
</head>

<body bgcolor="#FFFFFF" text="#000000">
        <h1>Schicken Sie uns ihre Texte</h1>
        <form action="verarbeitung.php" enctype="multipart/form-data" method="POST">

                <p> Wählen Sie eine Textdatei (txt, html usw.)
                von Ihrem Rechner aus:<br />
                <input name="lokale_datei" type="file"
                size="50" maxlength="1024" accept="text/*">

                </p>
                <p>Verzeichnis/Zieldatei<br>
                <input type="text" name="zieldatei">
                </p>

                <p>
                <input type="submit" name="Abschicken"
                value="Abschicken">
                </p>

        </form>
</body>
</html>

Ist der Punkt eigentlich in der Zeile gleich nach $zieldatei
PHP:
$zieldatei   .= "/" . end( explode( "/", $lokale_datei ) );
so gewünscht?

Ich habe in das Ausgabescript für den Fall eines Fehlers :))) eingebaut, dass der Inhalt der Variablen angezeigt wird. Und siehe da: Das, was ich schon vage vermutet hatte: Die Datei geht mir immer durch die Lappen:

Verbunden mit ftp_server als Benutzer bunte-ecke_test


Warning: ftp_put() [function.ftp-put]: Filename cannot be empty in /users/bunte-ecke/www/Bunte Ecke/Test-Ecke/PHP Upload/verarbeitung.php on line 29
Ftp upload war fehlerhaft!


Zieldatei: css/
Lokale Datei:

@netbandit: Sowohl das Formular, als auch das Input Feld haben diese Parameter.
Spreche ich die Datei mit $_FILES an, sieht die Fehlermeldung so aus:

Verbunden mit ftp_server als Benutzer bunte-ecke_test


Warning: explode() expects parameter 2 to be string, array given in /users/bunte-ecke/www/Bunte Ecke/Test-Ecke/PHP Upload/verarbeitung.php on line 26

Warning: end() expects parameter 1 to be array, null given in /users/bunte-ecke/www/Bunte Ecke/Test-Ecke/PHP Upload/verarbeitung.php on line 26

Warning: ftp_put() expects parameter 3 to be string, array given in /users/bunte-ecke/www/Bunte Ecke/Test-Ecke/PHP Upload/verarbeitung.php on line 29
Ftp upload war fehlerhaft!


Zieldatei: css/
Lokale Datei: Array

@Sorc: Wie sehe das denn in purem PHP aus?

@shadownight: Auch mit deinem Script bekomme ich einen Fehler:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ']' in /users/bunte-ecke/www/Bunte Ecke/Test-Ecke/PHP Upload/verarbeitung.php on line 2

Grüße
 

Duddle

Posting-Frequenz: 14µHz

AW: Upload Script fehlerhaft

Dein <input> vom Typ "file" wird nicht in $_POST übergeben, sondern in $_FILES. Daher macht die Zeile
PHP:
$lokale_datei = $_POST['lokale_datei'];
nichts. Die Variable $lokale_datei ist dann leer, genau deshalb wirft ftp_put() dann den Fehler dass der Dateiname nicht leer sein darf.

Lern grundlegendes Debugging mit print_r() bzw. var_dump() für Arrays und echo für andere Variablen, dann findest du solche Fehler auch alleine. Schau dir ausserdem die Superglobalen an, wenn du die noch nicht verstehst.


Duddle
 

SWFP

SWFP Mitglied

AW: Upload Script fehlerhaft

@Duddle: nein, es handelt sich mittlerweile schon um $_FILES, doch es funktioniert trotzdem nicht.

@shadownight: Ich habe gerade einen kleinen Fehler in deinem Script entdeckt: beim ersten ['filename'] fehlte das Anführungszeichen. Dann murrte es aber immer noch, der Dateityp wäre falsch. Als ich die Codezeile entfernte, denn aus ihr wurde ich nicht ganz schlau- vielleicht kannst du mir das mal kurz erläutern-, funktionierte es soweit, dass keine Fehlermeldung mehr kam. Passiert ist aber nichts.
Ich habe mir den Variableninhalt ausgeben lassen, doch er war leer.
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: Upload Script fehlerhaft

@Duddle: nein, es handelt sich mittlerweile schon um $_FILES, doch es funktioniert trotzdem nicht.
Hast du mehr als nur $_POST umbenannt, also tmp_name ausgelesen? "Funktioniert nicht" ist keine ausreichende Fehlerbeschreibung.


Duddle
 

SWFP

SWFP Mitglied

AW: Upload Script fehlerhaft

Oh, tut mir leid.

Nee, schon gut. Die ganzen Dateien brauch ich doch gar nicht, oder? Ich brauch doch nur Zieldatei und lokale Datei.
 

Duddle

Posting-Frequenz: 14µHz

AW: Upload Script fehlerhaft

Ich brauch doch nur Zieldatei und lokale Datei
Du brauchst den Pfad für die Zieldatei und du brauchst den Pfad der lokalen, hochgeladenen Datei (auf dem PHP-Server). Ersteres gibst du selbst an, letzteres liefert dir 'tmp_name' im $_FILES-Array. Ergo musst du das auslesen, sonst weiß ftp_put nicht wo die Datei zu finden ist.


Duddle
 

SWFP

SWFP Mitglied

AW: Upload Script fehlerhaft

Ah, okay. Danke. Aber selbst ersteres wird nicht mitgeliefert, also geht wieder verloren.
 

SWFP

SWFP Mitglied

AW: Upload Script fehlerhaft

upload.html
Code:
<html>
<head>
<title>Datei Upload</title>
</head>

<body bgcolor="#FFFFFF" text="#000000">
        <h1>Schicken Sie uns ihre Texte</h1>
        <form action="verarbeitung.php" enctype="multipart/form-data" method="POST">

                <p> Wählen Sie eine Textdatei (txt, html usw.)
                von Ihrem Rechner aus:<br />
                <input name="lokale_datei" type="file"
                size="50" maxlength="1024" accept="text/*">

                </p>
                <p>Verzeichnis/Zieldatei<br>
                <input type="text" name="zieldatei">
                </p>

                <p>
                <input type="submit" name="Abschicken"
                value="Abschicken">
                </p>

        </form>
</body>
</html>

verarbeitung.php
PHP:
$tempname = $_FILES[filename']['tmp_name'];  
$name = $_FILES['filename']['name'];  
$type = $_FILES['filename']['type'];  
$size = $_FILES['filename']['size'];  
if($type != "Dateitype" && $type != "Dateitype2" && $type != "Dateitype3") {  
    $err[] = "nur ... und...Dateien dürfen hochgeladen werden.";  
}  
if($size > "2048000") {  
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 2 MB!";  
}  
if(empty($err)) {  
    move_uploaded_file($tempname, "/Dein verzeichniss/Dein unterverzeichniss");  
}  
else {  
    foreach($err as $error)  
    echo "$error<br>";  
}
 

Duddle

Posting-Frequenz: 14µHz

AW: Upload Script fehlerhaft

Ein bisschen musst du schon mitdenken. Bei dir heißt das <input>-Feld "lokale_datei", nicht "filename". Ausserdem hast du ja selbst den fehlenden ' bemerkt. Die Pfade hast du auch nicht angepasst und irgendwie vermute ich du hast nicht mal die PHP-Tags in der Datei.


Duddle
 

shadownight

Nicht mehr ganz neu hier

AW: Upload Script fehlerhaft

Habs nochmal überarbeitet und getestet, sollte jetzt eigentlich funktionieren.

Einmal der html Teil also bei mir index.html
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Upload Script</title>
</head>

<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" /><input type="submit" value="Hochladen" />
</form>
</body>
</html>

Die upload.php:
Code:
<?php
$tempname = $_FILES['file']['tmp_name'];  
$name = $_FILES['file']['name'];  
$type = $_FILES['file']['type'];  
$size = $_FILES['file']['size'];    
if($size > "1048576") {  
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 2 MB!";  
}  
if(empty($err)) {  
    move_uploaded_file($tempname, "files/".$name);  
}  
else {  
    foreach($err as $error)  
    echo "$error<br>";  
} 
?>

Sollte jetzt eigentlich funktionieren im teil "files/" musst du den Fad durch deinen eigenen ersetzen als dort wo die Datein gespeichert werden sollen.Und bei dem teil f($size > "1048576") musst du die Zahl durch deine gewünschte max mb zahl die uplgeloadet werden darf in bytes angeben. Hoffe konnte dir damit helfen.
 

SWFP

SWFP Mitglied

AW: Upload Script fehlerhaft

Oh tut mir leid. Bei so vielen Variationen und Versuchen und Hin- und Her sehe ich langsam den Wald vor lauter Bäumen nicht mehr.
 

SWFP

SWFP Mitglied

AW: Upload Script fehlerhaft

Ich glaube, ich habe mich falsch ausgedrückt, als Sorc mir erklärte, dass diese Funktion nur zum Verschieben da ist. Ich wollte aber etwas neues hochladen. Oder verstehe ich da jetzt was falsch?
 

SWFP

SWFP Mitglied

AW: Upload Script fehlerhaft

Danke Duddle.

Allerdings wurde mir gesagt, dass der Upload auf kostenlosem Webspace auf diese Weise oft unterbunden wird. Deshalb befürchte ich, dass das auch in diesem Fall der Fall ist.

SWFP
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.474
Mitglieder
67.558
Neuestes Mitglied
StarsMan
Oben