Multiple file upload in php

前端 未结 14 1644
轮回少年
轮回少年 2020-11-21 11:32

I want to upload multiple files and store them in a folder and get the path and store it in the database... Any good example you looked for doing multiple file upload...

相关标签:
14条回答
  • 2020-11-21 12:02

    This is what worked for me. I had to upload files, store filenames and I had additional inof from input fields to store as well and one record per multiple file names. I used serialize() then added that to the main sql query.

      class addReminder extends dbconn {
        public function addNewReminder(){
    
               $this->exdate = $_POST['exdate'];
               $this->name = $_POST['name'];
               $this->category = $_POST['category'];
               $this->location = $_POST['location'];
               $this->notes = $_POST['notes'];
    
    
    
               try {
    
                         if(isset($_POST['submit'])){
                           $total = count($_FILES['fileUpload']['tmp_name']);
                           for($i=0;$i<$total;$i++){
                             $fileName = $_FILES['fileUpload']['name'][$i];
                             $ext = pathinfo($fileName, PATHINFO_EXTENSION);
                             $newFileName = md5(uniqid());
                             $fileDest = 'filesUploaded/'.$newFileName.'.'.$ext;
                             $justFileName = $newFileName.'.'.$ext;
                             if($ext === 'pdf' || 'jpeg' || 'JPG'){
                                 move_uploaded_file($_FILES['fileUpload']['tmp_name'][$i], $fileDest);
                                 $this->fileName = array($justFileName);
                                 $this->encodedFileNames = serialize($this->fileName);
                                 var_dump($this->encodedFileNames);
                             }else{
                               echo $fileName . ' Could not be uploaded. Pdfs and jpegs only please';
                             }
                           }
    
                        $sql = "INSERT INTO reminders (exdate, name, category, location, fileUpload, notes) VALUES (:exdate,:name,:category,:location,:fileName,:notes)";
                        $stmt = $this->connect()->prepare($sql);
                        $stmt->bindParam(':exdate', $this->exdate);
                        $stmt->bindParam(':name', $this->name);
                        $stmt->bindParam(':category', $this->category);
                        $stmt->bindParam(':location', $this->location);
                        $stmt->bindParam(':fileName', $this->encodedFileNames);
                        $stmt->bindParam(':notes', $this->notes);
                        $stmt->execute();
                      }
    
               }catch(PDOException $e){
                 echo $e->getMessage();
               }
          }
        }
    
    0 讨论(0)
  • 2020-11-21 12:03

    Multiple files can be selected and then uploaded using the
    <input type='file' name='file[]' multiple>
    The sample php script that does the uploading:

    <html>
    <title>Upload</title>
    <?php
        session_start();
        $target=$_POST['directory'];
            if($target[strlen($target)-1]!='/')
                    $target=$target.'/';
                $count=0;
                foreach ($_FILES['file']['name'] as $filename) 
                {
                    $temp=$target;
                    $tmp=$_FILES['file']['tmp_name'][$count];
                    $count=$count + 1;
                    $temp=$temp.basename($filename);
                    move_uploaded_file($tmp,$temp);
                    $temp='';
                    $tmp='';
                }
        header("location:../../views/upload.php");
    ?>
    </html>
    

    The selected files are received as an array with

    $_FILES['file']['name'][0] storing the name of first file.
    $_FILES['file']['name'][1] storing the name of second file.
    and so on.

    0 讨论(0)
  • 2020-11-21 12:03

    Just came across the following solution:

    http://www.mydailyhacks.org/2014/11/05/php-multifile-uploader-for-php-5-4-5-5/

    it is a ready PHP Multi File Upload Script with an form where you can add multiple inputs and an AJAX progress bar. It should work directly after unpacking on the server...

    0 讨论(0)
  • 2020-11-21 12:05
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>
    
    <body>
    <?php
    $max_no_img=4; // Maximum number of images value to be set here
    
    echo "<form method=post action='' enctype='multipart/form-data'>";
    echo "<table border='0' width='400' cellspacing='0' cellpadding='0' align=center>";
    for($i=1; $i<=$max_no_img; $i++){
    echo "<tr><td>Images $i</td><td>
    <input type=file name='images[]' class='bginput'></td></tr>";
    }
    
    echo "<tr><td colspan=2 align=center><input type=submit value='Add Image'></td></tr>";
    echo "</form> </table>";
    while(list($key,$value) = each($_FILES['images']['name']))
    {
        //echo $key;
        //echo "<br>";
        //echo $value;
        //echo "<br>";
    if(!empty($value)){   // this will check if any blank field is entered
    $filename =rand(1,100000).$value;    // filename stores the value
    
    $filename=str_replace(" ","_",$filename);// Add _ inplace of blank space in file name, you can remove this line
    
    $add = "upload/$filename";   // upload directory path is set
    //echo $_FILES['images']['type'][$key];     // uncomment this line if you want to display the file type
    //echo "<br>";                             // Display a line break
    copy($_FILES['images']['tmp_name'][$key], $add); 
    echo $add;
        //  upload the file to the server
    chmod("$add",0777);                 // set permission to the file.
    }
    }
    ?>
    </body>
    </html>
    
    0 讨论(0)
  • 2020-11-21 12:06
    $property_images = $_FILES['property_images']['name'];
        if(!empty($property_images))
        {
            for($up=0;$up<count($property_images);$up++)
            {
                move_uploaded_file($_FILES['property_images']['tmp_name'][$up],'../images/property_images/'.$_FILES['property_images']['name'][$up]);
            }
        }
    
    0 讨论(0)
  • 2020-11-21 12:09

    HTML

    1. create div with id='dvFile';

    2. create a button;

    3. onclick of that button calling function add_more()

    JavaScript

    function  add_more() {
      var txt = "<br><input type=\"file\" name=\"item_file[]\">";
      document.getElementById("dvFile").innerHTML += txt;
    }
    

    PHP

    if(count($_FILES["item_file"]['name'])>0)
     { 
    //check if any file uploaded
     $GLOBALS['msg'] = ""; //initiate the global message
      for($j=0; $j < count($_FILES["item_file"]['name']); $j++)
     { //loop the uploaded file array
       $filen = $_FILES["item_file"]['name']["$j"]; //file name
       $path = 'uploads/'.$filen; //generate the destination path
       if(move_uploaded_file($_FILES["item_file"]['tmp_name']["$j"],$path)) 
    {
       //upload the file
        $GLOBALS['msg'] .= "File# ".($j+1)." ($filen) uploaded successfully<br>";
        //Success message
       }
      }
     }
     else {
      $GLOBALS['msg'] = "No files found to upload"; //No file upload message 
    }
    

    In this way you can add file/images, as many as required, and handle them through php script.

    0 讨论(0)
提交回复
热议问题