Problem beim File-upload per Formular

Wo prüfst du denn MIME Type? Probiere mal "$dateityp[2] != ''" Ansonsten habe ich schon mal einen Bildupload beschrieben, siehe hier. Dort mußt du dann natürlich deine Filesizeprüfung noch einbauen, wobei es da noch andere Möglichkeiten gibt.
 
$dateityp[2] auf "nicht leer" zu prüfen ist davon abgesehen zu wenig, da 3 und 4 auch "nicht leer" bedeuten und das sind PNG und SWF.

Mir ist aber eine ganz andere Idee gekommen. Könnte es sein, daß es vielleicht CMYK jpegs sind? Das sind für den Rechner jpeg Dateien, nicht aber für den Server. Die müßten vorher noch auf RGB umgerechnet werden.
 
Also ich hab jetzt die Version "$dateityp[2] != ''" ausprobiert und ich hab auch die Version auf kalle123456s Link ausprobiert und die Bilder sind auch keine CMYK sondern RGBs und abgesehen davon muss es doch auch möglich sein CMYKs hochzuladen?!

Bei der Version von dem Link kam leider auch keine Fehlermeldung, deswegen weiß ich jetzt halt auch nich, wo ich suchen muss, nur das da auch der Titel und der Autor nicht richtig eingetragen wurden. :confused:
 
Mache mal ein else bei "move_uploaded_file" Also so ungefähr...

PHP:
if(move_uploaded_file()){
} else {
   print_r($_FILES); 
}

und poste dann mal die Ausgabe und prüfe das mal.

PHP:
if(ini_get("file_uploads")){
      die('Upload möglich!');
}else{
   die('Kein Upload möglich!');
}
 
Zuletzt bearbeitet von einem Moderator:
beim ersten if wird nur angezeigt, dass das ild jetzt hochgeladen ist, was es aber nicht ist, und beim 2. if kommt, dass der upload möglich ist
 
move_uploaded_file() gibt false zurück wenn die Datei nicht verschoben werden kann, verstehe ich also nicht. Suchst du im falschen Verzeichniss ;). Zeige mal deinen jetzigen Stand.
 
abgesehen davon muss es doch auch möglich sein CMYKs hochzuladen?!
Ja, du kannst ein CMYK Bild als Datei hochladen.
Nein, du kannst kein CMYK Bild als Bild hochladen. Das Web kann nur mit RGB Dateien was anfangen, da CMYK ausschließlich für den Druck bestimmt ist und da der Monitor auch in RGB arbeitet, auch dafür extra umgewandelt werden müssen.

Hast du ansonsten mal die Reche des Zielordners geprüft? Die müssen auf 777 stehen, sonst kommt da auch nix an.
 
ich habs jetzt gelöst, der fehler ist eingentlich ziemlich bescheuert und liegt auch nicht in dem code sondern im Formular, hatte nämlich kein enctype... drin.
und ja der ordner ist schon von anfang an auf 777
aber danke trotzdem für eure mühe =)
 
ich habe jetztallerdings ein anderes Problem festgestellt, was ich mir beim besten Willen nicht erklären kann, und zwar wird anstatt der ID des Albums in das das Bild soll nur // in die Tabelle der Datenbank eingetragen. Komischerweise mache ich das mit dem eintragen des Albums in einem anderen Formular genauso wie hier, und da funktioniert es.
Ich stell euch mal nochmal den Code rein, vielleicht entdeckt ihr ja was, was ich übersehen habe.

Formular:
PHP:
<form action="newbild2.php" method="post" enctype="multipart/form-data">
<?php
echo "<input type=hidden name=album value='".strip_tags($_REQUEST["album"])."'>";
?>
<table style="border-collapse:collapse">
<tr>
<td  class="t1" valign="top"><font face="verdana" size="1">Titel des neuen Bilds</td> 
<td  class="t1" valign="top"><font face="verdana" size="1"><input type="text" name="titel" size="31"></td> 
</tr>

<tr>
<td  class="t1" valign="top"><font face="verdana" size="1">Text</td> 
<td  class="t1" valign="top"><font face="verdana" size="1"><input type="file" name="bild"></td> 
</tr>

<tr>
<td  class="t1" valign="top"><font face="verdana" size="1">Beschreibung</td> 
<td  class="t1" valign="top"><font face="verdana" size="1"><textarea name="beschreibung" cols=25 rows=4></textarea></td> 
</tr>

<tr>
 <td  class="t1" align="center"><input type="submit" value="Senden"></td>
 <td  class="t1" align="center"><input type="reset" value="Löschen"></td>
</tr>
</form>
</table><p>

Das hier '".strip_tags($_REQUEST["album"])."' wird über den Link zu diesem Formular übertragen, das habe ich kontrolliert.

PHP:
$titel = $_POST["titel"];
$album = $_POST["album"];
$beschreibung = $_POST["beschreibung"];
$autor = $_SESSION["login"];

$dateityp = GetImageSize($_FILES['bild']['tmp_name']);
if($dateityp[2] != 0)
   {

   if($_FILES['bild']['size'] <  400000)
      {
      move_uploaded_file($_FILES['bild']['tmp_name'], "bilder/".$_FILES['bild']['name']);
      echo "Das Bild wurde Erfolgreich hochgeladen";
      }

   else
      {
         echo "Das Bild darf nicht größer als 380 kb sein ";
      }

    }

else
    {
    echo "Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }



$eintrag = "INSERT INTO bildlich
(bild, titel, beschreibung, album, autor, datum)

VALUES
('".mysql_real_escape_string($_FILES['bild']['name'])."', '".mysql_real_escape_string($titel)."', '".mysql_real_escape_string($beschreibung)."', '".mysql_real_escape_string($album)."', '".mysql_real_escape_string($autor)."', '".time()."')";

achja und am ende der datei newbild2.php hab ich auch noch eine weiterleitung zu dem Album, in das das bild gespeichert werden soll über $album und ich komme immer zum richtigen Album, also die Information in $album stimmt, der Fehler kann also nur in $eintrag stecken, aber ich weiß nicht wo?
 
Zuletzt bearbeitet:
Zurück