Bild soll Upgeloadet werden doch Type wird nicht erkannt oder falsch ausgewerted

Yoda

Gesperrt
Tag auch,
ich habe eine keines Upload Formular jedoch bekomme ich immer meine Fehlermeldung:
Es dürfen nur Dateien des Typs Gif oder jpeg hochgeladen werden.
Hier der Code inkusive Formular:
PHP:
<!-- links1.php -->
<td width="619" class="main" height="749" bgcolor="#323C50" valign="top">
<font face="Impact" size="5">Mp3's hochladen</font>
<br />
<br />
<table width="600" border="1" cellpadding="10" cellspacing="0" bordercolor="#000000">
<tr>
<td valign="top">
<?php
  if($_POST['upload'] == " Hochladen ")
  {
      if($_POST['imgque'] == 2)
      {
          $tempname  = $_FILE['imgsrc']['temp_name'];
          $name      = $_FILE['imgsrc']['name'];
          $type      = $_FILE['imgsrc']['type'];
          $size      = $_FILE['imgsrc']['size'];
          $imagesize = getImageSize($tempname);
          echo $imagesize['0'];
          echo $imagesize['1'];
          if($imagesize['0'] > "600")
          {
              $err[] = "<span class='news'>Das Bild darf maximal 600 Pixel Breit seien.</span>";
          }
          if($imagesize['1'] > "300")
          {
              $err[] = "<span class='news'>Das Bild darf maximal 300 Pixel Hoch seien.</span>";
          }
          if($type != "image/gif" && $type != "image/pjpeg")
          {
              $err[] = "<span class='news'>Es dürfen nur Dateien des Typs Gif oder jpeg hochgeladen werden.</span>";
          }
          if($size > "100000")
          {
              $err[] = "<span class='news'>Das Bild das du hochaden willst ist zu Groß.<br>Das Bild darf maximal 100kB Groß seien.</span>";
          }
          if(empty($err))
          {
              copy($tempname, "upload/".$name);
              echo "Das Bild wurde erfolgreich hochgeladen.";
          }
          else
          {
              foreach($err as $error);
              echo $error."<br />";
              echo "<br />";
              echo "<br />";
              echo "<span class='news'>Das Bild wurde nicht hochgelden.</span>";
              echo "<br />";
              echo "<br />";
          }
      }
  }
  echo "<form name='linkupload' action='".$_SERVER['PHP_SELV']."' method='post' enctype='multipart/form-data'>";
 ?>
<span class="news">Url:</span>
<br />
<input type="text" name="url" size="40" maxlenght="50" value="http://">
<br />
<br />
<span class="news">Ist ein Bild zum Linken vorhanden ?</span>
<br />
<select size="1" name="imgque" onChange="feld_sperren();">
<option selected value="1">Nein</option>
<option value="2">Ja</option>
</select>
<br />
<br />
<span class="news">Quelle der Datei:</span>
<br />
<input name="imgsrc" type="file" size="40" maxlenght="80" DISABLED>
<br />
<br />
</td>
</tr>
</table>
<br />
<br />
<input type="submit" value=" Hochladen " name="upload">
</form>
</td>
<!-- Ende links1.php -->
Schon mal danke
MfG Yoda
 
$type=exif_imagetype($_POST['imgsrc']);

if($type!=IMAGETYPE_GIF || $type!=IMAGETYPE_JPEG){
echo "Es dürfen nur Dateien des Typs Gif oder jpeg hochgeladen werden";}
 
Das superglobale Array für Dateien heißt $_FILES und nicht $_FILE.

Der MIME Typ für JPEG Bilder ist nicht "image/pjpeg", sondern "image/jpeg".

Und es bleibt ein logisches AND, also &&.

Fluke
 
Danke schon mal,
pjpeg hab ich aus dem tutorial entnommen, da ich mich mit Uploads noch nicht so auskenne. Ein Problem hab ich aber noch, und zwar schein etwas mit getImageSize nicht richtig zu funktionieren, da bei den beiden echos unten nichts ausgegeben wird.
PHP:
echo $imagesize['0'];
echo $imagesize['1'];
MfG Yoda
 
Also Flo[H], dass wäre mir aber neu, dass ein Array nicht funktioniert wenn man die schönen genau dahin gehörenden Singlequotes in der Elementklammer benutzt. :)
 
$tempname = $_FILES['imgsrc']['temp_name'];

muss heißen:

$tempname = $_FILES['imgsrc']['tmp_name'];

Lass dir mal $_FILES per var_dump($_FILES); anzeigen, dann siehst du alle Werte innerhalb des Arrays.

Damit bekommt dann auch dein getimagesize() einen gültigen Parameter, so dass du es problemlos mit echo $imagesize[0] oder $imagesize['0'] ausgeben kannst. Die Variante ohne ' wäre allerdings in dem Falle korrekter, da es sich um den numerischen Index des Arrays handelt und nicht um einen assoziativen Index in Form eines Strings.

Ein '0' oder '1' wird allerdings auch intern in den entsprechenden Integerwert umgewandelt. Von daher ist's letzlich Latte.

Wollte nur klugscheissen ;). Hab auch mal das entsprechende Kapitel im Handbuch rausgesucht: http://de.php.net/manual/de/language.types.array.php

Fluke
 
Zurück