Upload - Problem bei der Übergabe?!

Mammuth

Mitglied
Hallo Leute,

nachdem ich die Datei ausgewählt und hochgeladen habe, überprüft die Datei "upload.php", ob die Datei die Endung .gif oder .jpeg hat und ob sie kleiner als 15 KB ist. Das sollte normalerweise passieren. Tut es aber nicht! Ich frage mich warum. Hier einmal der Code:

##Die Maske##

Code:
<html>
<body>

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


</body>
</html>

##upload.php##

PHP:
<?php 

$tempname = $_FILES['file']['tmp_name']; 
$name     = $_FILES['file']['name']; 

$type     = $_FILES['file']['type']; 
$size     = $_FILES['file']['size'];


if($type != "image/gif" && $type != "image/pjpeg") 
{ 
    $err[] = "Nur gif und jpeg Dateien dürfen hochgeladen werden."; 
} 
if($size > "15000") 
{ 
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!"; 
}

if(empty($err)) 
{ 
    copy("$tempname", "$name"); 
    echo "Die Datei $name wurde erfolgreich hochgeladen!"; 
} 
else 
{ 
    foreach($err as $error) 
    echo "$error<br>"; 
}

?>

Bei "upload.php" habe ich zum Testen, ob er überhaupt was ausgibt, folgendes eingefügt.

PHP:
echo $type; //z.B., oder $size etc.

Er gibt aber nichts aus.
 
Zuletzt bearbeitet:
Hallo hast du mal versucht das Array zu nummerieren?
Also so:
PHP:
<?php

if($type != "image/gif" && $type != "image/pjpeg") 
{ 
    $err[0] = "Nur gif und jpeg Dateien dürfen hochgeladen werden."; 
} 
if($size > "15000") 
{ 
    $err[1] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!"; 
} 
?>

ansonsten würde ich noch vorschlagen das script so zu machen:

PHP:
<?php 

$tempname = $_FILES['file']['tmp_name']; 
$name     = $_FILES['file']['name']; 

$type     = $_FILES['file']['type']; 
$size     = $_FILES['file']['size']; 


if($type != "image/gif" && $type != "image/pjpeg") 
{ 
    $error .= "Nur gif und jpeg Dateien dürfen hochgeladen werden."; 
} 
if($size > "15000") 
{ 
    $error .= "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!"; 
} 

if(empty($err)) 
{ 
    copy("$tempname", "$name"); 
    echo "Die Datei $name wurde erfolgreich hochgeladen!"; 
} 
else 
{ 
    echo "$error<br>"; 
} 

?>

MfG Funjoy
 
Darin liegt ja nicht das Problem. Wenn ich "$type" ausgeben will, also

PHP:
echo $type;

gibt es nichts aus. Das ist das Problem.
 
Aber die Datei wird auf jeden Fall hochgeladen?!
Evtl. mal print_r($_POST) bzw. print_r($_FILES) probieren ...

Welche PHP Version nutzt du?

@ Funjoy: Du solltest nochmal einen kurzen Blick auf das
readme zu Array's werfen ;)
 
Nein, die Datei wird auch nicht hochgeladen. Wie gesagt, er gibt nichts aus. Keine Variable. Die sind leer. Ich hab deins mal ausprobiert, geht aber auch nicht.
Ich habe die PHP-Version: 4.3.4

Ich möchte später nämlich Dateien vom PC einfach über das Script hochladen können. (importieren und exportieren).
 
Ich spekuliere mal, dass die Datei dann schon wieder aus dem temporären Ordner gelöscht wurde. Vielleicht geht es ja nachdem du move_uploaded_file benutzt hast.


MfG Radhad
 
WEnn das Skript abgearbeitet ist, wird die hochgeladene Datei automatisch von ihrem temporäen Ort gelöscht.
 
Ich verstehe schon was ihr meint. Das ergibt aber keinen Sinn. Passt mal auf. Wenn ich
Code:
echo $type;
z. B. ausgeben will, gibt er mir nicht aus.

Code:
<?php 

$tempname = $_FILES['file']['tmp_name']; 
$name     = $_FILES['file']['name']; 

$type     = $_FILES['file']['type']; 
$size     = $_FILES['file']['size']; 

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
echo $type; // Kann auch eine andere Variable von oben sein
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

if($type != "image/gif" && $type != "image/pjpeg") 
{ 
    $err[] = "Nur gif und jpeg Dateien dürfen hochgeladen werden."; 
} 
if($size > "15000") 
{ 
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!"; 
} 

if(empty($err)) 
{ 
    copy("$tempname", "$name"); 
    echo "Die Datei $name wurde erfolgreich hochgeladen!"; 
} 
else 
{ 
    foreach($err as $error) 
    echo "$error<br>"; 
} 

?>

Vielleicht könnt ihr mir mal den gefallen tun und das Script bei euch testen. Vielleicht liegt es auch nicht an dem Script, sondern am Server oder so. Wäre echt nett von euch. Danke
 
Zurück