2009-07-13 13 views
1

Ich versuche ein PHP-Skript zu schreiben, das mehrere Dateien hochladen kann.Hochladen des Bildes funktioniert nicht

for($i=0;$i<count($_FILES['uploadimg']['name']);$i++){ 
    $name = $_FILES['uploadimg']['name'][$i]; 
    $type = $_FILES['uploadimg']['type'][$i]; 
    $filepath = $_FILES['uploadimg']['tmp_name'][$i]; 
    $size = getimagesize($filepath); 
    $img = file_get_contents($filepath); 

    //insert into database 
} 

Das Problem ist, dass die Variablen nicht die Art und Weise aufgefüllt werden, sie sollten.

Wenn ich ein jpeg „image.jpg“ laden, habe ich entdeckt, dass die Variablen folgende Werte haben: (von Datenbank-Code mit echo s ersetzt und var_export s)

$name = 'image.jpg'; // good 
$type = ''; // not good 
$filepath = ''; // not good 
$size = false; // not good 
$img = false; // not good 

ich, dass ich beachten sollte realisieren $size und $img sind abhängig von $filepath ein gültiger Dateipfad.

Könnte jemand Einblick geben, was falsch läuft oder was mir fehlt? Ich habe jetzt einen Tag lang mit dem Code herumgespielt und kann mir keine Lösung ausdenken.

Update:

print_r($_FILES) auf 3 Bilder liefert:

Array (
    [uploadimg] => Array (
     [name] => Array (
      [0] => test1.jpg 
      [1] => test2.jpg 
      [2] => test3.jpg 
     ) 
     [type] => Array (
      [0] => image/jpeg 
      [1] => 
      [2] => image/jpeg 
     ) 
     [tmp_name] => Array (
      [0] => /tmp/phpkC6f2F 
      [1] => 
      [2] => /tmp/phpgFrPl8 
     ) 
     [error] => Array (
      [0] => 0 
      [1] => 1 
      [2] => 0 
     ) 
     [size] => Array (
      [0] => 238906 
      [1] => 0 
      [2] => 237308 
     ) 
    ) 
) 

Kann ich dann davon ausgehen, das bedeutet, dass das Bild zu groß ist?

Antwort

2

This question/answer könnte hilfreich sein.

Bearbeiten - Es sieht aus wie ein Problem mit der Dateigröße. Beide Dateien, die funktionierten, haben eine Größe von ca. 1,8 Mb und standardmäßig hat PHP ein Datei-Upload-Limit von 2 Mb. Ich kann Ihnen nur den Rat eines Windows-Perspektive auf das, aber ich würde in PHP.ini zu Anstieg die upload_max_filesize und vielleicht post_max_size settings suchen.

Bearbeiten 2 - Es gibt einen Abschnitt auf PHP.net, dass lists the error codes for uploading. Du erhältst eine 1, nämlich:

UPLOAD_ERR_INI_SIZE 

Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini. 

Das entspricht dem, was ich in meinem ersten Schnitt gesagt habe.

+0

Danke, das erklärt eine Menge, vor allem in Verbindung mit Ross 'Vorschlag, einen Dump zu machen, und es sind Ergebnisse, die ich jetzt gepostet habe. –

1

Sind alle diese Dateien vom gleichen Typ? Können Sie uns beim Hochladen einiger Dateien eine var_dump der Variablen geben? Sind die Variablen für alle Uploads leer oder nur einige?

Zum Beispiel dieser Code:

gibt diese Ausgabe:

Array (
    [upload] => Array (
     [name] => Array (
      [0] => IMG_0005.jpg 
      [1] => IMG_0249.jpg 
      [2] => IMG_0007.JPG 
     ) 
     (...snip...) 
     [size] => Array ( 
      [0] => 1776529 
      [1] => 1902522 
      [2] => 798008 
     ) 
    ) 
) 

Denken Sie daran, $_FILES['name']['error'] für jede Datei zu überprüfen.

+0

Ich habe die Ergebnisse veröffentlicht, und ich glaube, dass das Problem die Dateigröße angibt. –

Verwandte Themen