Upload Formular

Hallo. Ich hab mir ein Uploadformular erstellt, nur irgendwie läd er nichts hoch!? Es kommt immer die Meldung, das ich das Upload Formular benutzen solle. Kann mir jemand sagen warum…

thx

formular.html
[HTML]









[/HTML]

upload.php
[PHP]<?php

// Variabeln festlegen
$max_byte_size = 10240000;
$allowed_types = „(zip|raw|pdf|doc|txt)“;

// Formular wurde abgeschickt
if(isset($_POST[„Uploaden“])) {

// Wurde wirklich eine Datei hochgeladen?
if(is_uploaded_file($_FILES[„file“][„tmp_name“])) {

// Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen)
if(preg_match(„/.“ . $allowed_types . „$/i“, $_FILES[„file“][„name“])) {

// Datei auch nicht zu groß
if($_FILES[„file“][„size“] <= $max_byte_size) {

// Alles OK → Datei kopieren
if(copy($_FILES[„file“][„tmp_name“],‚./uploads/‘. $_FILES[„file“][„name“])) {

echo „Datei erfolgreich hochgeladen!
“;
echo "Name: " . $_FILES[„file“][„name“] . „
“;
echo „Größe: " . $_FILES[„file“][„size“] . " Byte
“;
echo "MIME-Type: " . $_FILES[„file“][„type“] . „
“;
echo „Link: <a href="/uploads/“ . $_FILES[„file“][„name“] . „">“ . $_FILES[„file“][„name“] . „“;

}
else {echo „Datei konnte nicht hochgeladen werden.“;}
}
else {echo „Die Datei darf nur eine Größe von " . $max_byte_size . " Byte besitzen.“;}
}
else {echo „Die Datei besitzt keine ungültige Endung.“;}
}
else {echo „Keine Datei zum Hochladen angegeben.“;}
}
else {echo „Bitte benutzen Sie das Upload Formular.“;}
?> [/PHP]

Mit [php]if(isset($_POST[„Uploaden“]))[/php]fragst Du ab, ob eine Variable gesetzt ist, aber Uploaden ist der Inhalt der Variable.

Mit [php]if(isset($_POST[„submit“]))[/php]sollte es gehen.

Gruß thuemmy

Danke. Jetzt kommt die Meldung, Keine Datei zum Hochladen angegeben.

Na, immerhin sind wir schon einen Schritt weiter :smiley:

Lass Dir mal die Variable $_FILES ausgeben, und zwar direkt nachdem Du festgestellt hast, dass der Submit-Button gedrückt wurde.

Gruß thuemmy

Da steht „Array“ drinne :?:

Ne, steht da nicht wirklich drinne :smiley:

Lass Dir das Array mal so ausgeben:
[php]print_r($_FILES);[/php]

Gruß thuemmy

Ah danke.
[PHP]Array ( [userfile] => Array ( [name] => link.txt [type] => text/plain [tmp_name] => /var/tmp/phpX8aaVU [error] => 0 [size] => 32 ) )[/PHP]

Also hochgeladen ist die Datei. Muss bei is_uploaded_file() nicht der Original-Dateiname übergeben werden?

Gruß thuemmy

[PHP]Original-Dateiname übergeben[/PHP]

Mach ich doch mit [file] oder nicht!?

[PHP]Also hochgeladen ist die Datei[/PHP]

Meinst du in das temp Verzeichniss!?

Meiner Meinung nach sollte das so heißen:[php]if(is_uploaded_file($_FILES[„file“][„name“])) [/php]Gruß thuemmy

Habs mal so ausprobiert. Klappt leider auch nicht.

Also …

  1. es muss Tmp_name heißen
  2. schaumal her dein uploadfeld heißt „userfile“ und die nennst die variable
    $_FILES[‚file‘]
    ist ein wiederspruch …
    wenn dann $_FILES[‚userfile‘]