2016-04-12 5 views
2

Ich schreibe einen Code, um ein Bild an einem bestimmten Ort hochzuladen und eine Anzahl hochgeladener Bilder anzuzeigen. Es wird perfekt funktionieren, wenn ich unter 8 Bilder wähle. Aber der gleiche Code funktioniert nicht, wenn ich 10 bis 20 Bilder auswähle. Ich habe wirklich keine Ahnung, warum es funktionieren würde, wenn ich eine minimale Anzahl von Bildern auswähle und nicht funktioniert, wenn ich eine größere Anzahl von Bildern auswähle. Bitte finden meinen Code untenDas ausgewählte Bild kann nicht hochgeladen werden, wenn die Anzahl der ausgewählten Bilder 10 überschreitet. 10

storeimage.php

<?php 
    require_once 'pdoconnectionusingclass.php'; 
?> 
<html lang="en"> 
    <head> 
     <meta charset="UTF-8" /> 
     <title>Multiple File Ppload with PHP</title> 
    </head> 
    <body> 
     <form action="storeimagename.php" method="POST" enctype="multipart/form-data"> 
      <div> 
      <select name="moviename"> 
      <option value = "">---Select---</option> 
      <?php 
      try 
      { 
      $dbobj=new database(); 
      $dbobj->openconnection(); 
      $sql='select * from tbl_movie'; 
      $query=$dbobj->getdata($sql); 
      if(isset($query)) 
      { 
       foreach ($query as $row) 
       { 
        echo '<option value='.str_replace(' ','_', $row['movie_name']).'>'.$row['movie_name'].'</option>'; 
       } 
      } 
      $dbobj->closeconnection(); 
      } 

      catch(Exception $e) 
      { 
       echo $e->getMessage(); 
      } 
      ?> 
      </div> 
      <br/> 
      <div> 
      <input type="file" id="file" name="files[]" multiple="multiple" accept="image/*" /> 
      <input type="submit" value="Upload!" /> 
      </div> 
    </form> 
    </body> 
    </html> 

storeimagename.php

<?php 
require_once 'pdoconnectionusingclass.php'; 
$valid_formats = array("jpg", "png", "gif", "bmp"); 
$max_file_size = 1048576 *10; //100 kb 
$path = "uploads/"; // Upload directory 
$count = 0; 

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){ 
    // Loop $_FILES to exeicute all files 


    $total_image=count($_FILES['files']['name']); 

    $dbobj=new database(); 
    $dbobj->openconnection(); 

    for($i=0;$i<$total_image;$i++) 
    { 
    foreach ($_FILES['files']['name'] as $i => $name) {  
     if ($_FILES['files']['error'][$i] == 4) { 
      continue; // Skip file if any error found 
     }   
     if ($_FILES['files']['error'][$i] == 0) {    
      if ($_FILES['files']['size'][$i] > $max_file_size) { 
       $message[] = "$name is too large!."; 
       continue; // Skip large files 
      } 
      elseif(! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)){ 
       $message[] = "$name is not a valid format"; 
       continue; // Skip invalid file formats 
      } 
      else{ // No error found! Move uploaded files 
//     echo $_FILES['files']['tmp_name'][$i]; 
//     echo $_FILES['files']['name'][$i]; 

        if(move_uploaded_file($_FILES["files"]["tmp_name"][$i], $path.$name)) 
        { 
         $count++; // Number of successfully uploaded file 
         $gallery.=','.$name; 

        } 
      } 
     } 
    } 
    } 

    if(count==18) 
    { 
     $sql='insert into tbl_movie_gallery values((select movie_id from tbl_movie where movie_name='.str_replace('_',' ',$_POST['moviename']).')'.$gallery.');'; 
     $dbobj->insertdata($sql); 
    } 

    //unset($_FILES['files']); 
    $dbobj->closeconnection(); 
} 
?> 

Programm beendet wird, wenn dieses $ total_image Ausführung = count ($ _ FILES [ 'Dateien'] [ 'name ']); Zeile, wenn ich 10 bis 20 Dateien auswähle. $ total_image wird als 0 angezeigt. Kann jemand helfen, was ist das Problem hier? Danke im Voraus.

Antwort

1

PHP hat eine Einstellung für die maximale Anzahl von Dateien, die Sie gleichzeitig hochladen können. Der Standardwert ist 20. Sie müssen dies in Ihrer Datei php.ini ändern.

Die Einstellung Sie suchen ist max_file_uploads

More information

+0

Ja, Sie haben Recht. Aber warum funktioniert mein Code nicht, wenn ich 10 oder 12 oder 13 Bilder aus dem Dateibrowserfenster auswähle? Jetzt habe ich max_file_uploads als 20 in php.ini-Datei. – Janaki

+0

Sie können auch die anderen Einstellungen in php.ini überprüfen, zum Beispiel 'upload_max_filesize' und' post_max_size' – rjdown

+1

Nur eine Anmerkung, vergessen Sie nicht, Ihren HTTP-Server nach Änderungen der php.ini Konfiguration – Chay22

Verwandte Themen