Tom: Upload

Beitrag lesen

Hello,

echo $_FILES['var_in_bild'][0];
bekomme ich garnichts zurück, wieso?
weil $_FILES['foo'] ein assoziatives und kein numerisches Array liefert, siehe http://de2.php.net/manual/de/features.file-upload.php.

Das ist nicht ganz richtig. Man muss auch immer erst prüfen, was für ein Array geliefert wird.

da kommt entweder

$_FILES[$feldname]['tmp_name']
  $_FILES[$feldname]['name']
  $_FILES[$feldname]['error']
 ...

oder

$_FILES[$feldname]['tmp_name'][0]
  $_FILES[$feldname]['tmp_name'][1]
  ...
  $_FILES[$feldname]['tmp_name'][n]

$_FILES[$feldname]['name'][0]
  $_FILES[$feldname]['name'][1]
  ...
  $_FILES[$feldname]['name'][n]

$_FILES[$feldname]['error'][0]
  $_FILES[$feldname]['error'][1]
  ...
  $_FILES[$feldname]['error'][n]

Deshalb muss man nach dem Upload ersteinmal fragen, ob

if (isset($_FILES[$feldname]['error'])
  {
    if ($_FILES[$feldname]['error']===0))
    {
      # es wurde EINE Datei unter dem Feldnamen hochgeladen, es trat kein Fehler auf

echo "<p class="message">Unter dem Namen ".$_FILES[$feldname]['name'].
           " wurde eine Datei mit ".$_FILES[$feldname]['size']." Bytes".
           " und dem MIME-Type ".mime_content_type($_FILES[$feldname]['tmp_name']).
           " hochgeladen.</p>";

## danach dann den MIME-Type im Array der erlaubten Typen nachsehen (musst Du
      ## Dir anlegen) und dann entsprechend reagieren.

}
    elseif (is_array($_FILES[$feldname]['error']))
    {
      # es wurden mehrere Dateien unter dem Feldnamen hochgeladen
      foreach ($_FILES[$feldname]['error'] as $key => $val)
      {
        if ($val === 0)
        {
          ## unter dem Tempörärnamen $_FILES[$feldname]['tmp_name'][$key] liegt nun
          ## eine Datei vor, deren Mime-Type  an mit

echo "<p class="message">Unter dem Namen ".$_FILES[$feldname]['name'][$key].
               " wurde eine Datei mit ".$_FILES[$feldname]['size'][$key]." Bytes".
               " und demm MIME-Type ".mime_content_type($_FILES[$feldname]['tmp_name'][$key]).
               " hochgeladen.</p>";

## danach dann den MIME-Type im Array der erlaubten Typen nachsehen (musst Du
          ## Dir anlegen) und dann entsprechend reagieren.
        }
        else
        {
          ## Fehlermeldung entsprechend Muster im IF-Zweig
        }
      }
    }
    else
    {
      echo "<p class=\message">Tu p&ouml;ser Pupe Tu!</p>
    }
  }
  else
  {
    ## keine Files hochgeladen
  }

Ich hoffe, dass nun kein Fehler mehr drinsteckt.

siehe auch:
http://de2.php.net/manual/de/function.mime-content-type.php

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau