2016-11-30 2 views
0

hochladen Ich habe erstellen Sie eine Funktion zum Hochladen mehrerer Dateien in PHP. Wenn ich versuche, Dateien hochzuladen, wähle ich 15 Dateien zu einem Zeitpunkt aus, an dem die Anfrage bearbeitet wird. Erst werden vier Dateien in db gespeichert und alle 15 Dateien werden jedes Mal ins Verzeichnis hochgeladen.Nicht in der Lage, mehrere Dateien in PHP

Ich habe auch überprüft, die PHP.ini-Datei die maximale Datei Upload-Limit beträgt 50 Pre-Anfrage und Post max Größe ist 5M. kann immer noch keine Lösung für das Problem finden.

Warum der Datensatz nur für die erste Datei gespeichert wird.

if($_POST['submit']== 'Upload_picture') 
    { 
     //echo "<pre>";  print_r($_FILES['upload_picture']['name']); 
     //die; 

     $album_title = $_GET['name']; 
     $album_id = $_GET['album']; 
     $album_dir = "../images/album/$album_title/"; #album path root directory 
     $db_album_dir = "images/album/$album_title/"; #batadase album path root directory 
     $error = array(); 
     $extension = array('jpg','gif','png','jpeg'); 
     foreach($_FILES['upload_picture']['tmp_name'] as $key => $tmp_name){ 
      $file_name = $_FILES['upload_picture']['name'][$key]; 
      $file_tmp = $_FILES['upload_picture']['tmp_name'][$key]; 
      $ext = pathinfo($file_name, PATHINFO_EXTENSION); 
      $new_filename = rand().".".$ext; #changing name 
      if(in_array($ext,$extension)) 
      { 
       if(move_uploaded_file($file_tmp= $_FILES['upload_picture']['tmp_name'][$key],"$album_dir$new_filename")) 
       { 
       # insert record database 

        $values = [ 
        'album_id' =>$album_id, 
        'image_name' => $new_filename, 
        'album_name' => $album_title, 
        'image_path' => $db_album_dir.$new_filename, 
        'uploaded_date' => date("Y/m/d h:i:s a") 
        ]; 
        include_once "action_page.php"; 
        $tablename = 'album_picture'; 
        $abc = new Demo(); 
        $res = $abc->insert($tablename,$values); 
        unset($abc); 
        $_SESSION['upload_success'] = "Files Uploaded succesfully"; 
        header("location:../upload_album.php?album=$album_id&name=$album_title"); 

       } 
       else 
       { 
         $_SESSION['upload_error'] = "Something went wrong, files cannot be uploaded"; 
       } 

      } 
      else 
      { 
       $_SESSION['upload_warning'] = "Please upload file"; 
       header("location:../upload_album.php?album=$album_id&name=$album_title"); 
      } 
     }//EOF FROEACH 
+0

zunächst einmal prüfen, ob alle Dateien erfolgreich gebucht werden oder nicht von dort Namen Druck innerhalb der foreach() Schleife –

+0

Ja alle Dateien werden pro Anfrage gebucht –

Antwort

0

Ihr Eingabefeld für Datei sollte wie folgt sein:

<input type="file" id="file" name="name[]" multiple /> 

if(isset($_FILES['upload_picture']['name'])) 
    { 
     $file_name_all=""; 
     for($i=0; $i<count($_FILES['upload_picture']['name']); $i++) 
     { 
       $tmpFilePath = $_FILES['upload_picture']['tmp_name'][$i];  
       if ($tmpFilePath != "") 
       {  
        $path = "propertyimages/"; // create folder 
        $name = $_FILES['upload_picture']['name'][$i]; 
        $size = $_FILES['upload_picture']['size'][$i]; 

        list($txt, $ext) = explode(".", $name); 
        $file= time().substr(str_replace(" ", "_", $txt), 0); 
        $info = pathinfo($file); 
        $filename = $file.".".$ext; 
        if(move_uploaded_file($_FILES['upload_picture']['tmp_name'][$i], $path.$filename)) 
        { 
         $file_name_all.=$filename."*"; 
        } 
      } 
     } 
     $filepath = rtrim($file_name_all, '*'); 
     $tablename = 'album_picture'; 
     $abc = new Demo(); 
     $res = $abc->insert($tablename,$values); 
     unset($abc); 
     } 
     else 
    { 
     $filepath=""; 
    }