如何在这个班级上传多个图像

时间:2015-10-23 21:08:44

标签: php html mysql pdo

我想在我的数据库中上传多个图像只是url图像代码工作正常但我只能上传一个图像我需要上传我在数据库表中的3个图像e_img - e_img2 - e_img3如何上传图片网址3列

我的班级上传:

        <?php
       class Upload {

       private $allowedExts = array('doc','docx','pdf','txt','jpg','png');
       private $maxSize;
       private $file;
       private $uploadsDirecotry;
       private $fileUrl;
       private $filenames = array();

       function __construct($file,$allowedExts,$uploadsDirecotry,$maxSize){
           if(is_array($allowedExts) AND is_int($maxSize)){
             $this->file  = $file;
             $this->allowedExts = $allowedExts;
             $this->maxSize = $maxSize;
             $this->uploadsDirecotry = $uploadsDirecotry;

           }else{
             throw new Exception("File extension must be in an array and max size value must be intger value.");
           }

           }
       function uploadFiles(){

            $file = $this->file;
            $allowedExts = $this->allowedExts;
            $maxsize = $this->maxSize;
            $uploadsDir = $this->uploadsDirecotry;

        for($i = 0; $i < count($file['name']); $i++){

          $errors = array();

          // print_r($_FILES);
          $filename    = $file['name'][$i];
          $fileext    = strtolower(end(explode('.',$filename)));
          $filesize    = $file['size'][$i];
          $filetmpname = $file['tmp_name'][$i];

        if(in_array($fileext, $allowedExts) === FALSE){
           $errors[] = "Extension in sot allowed";
        }

         if($filesize > $maxsize){
            $errors[] = "File size must be less than {$maxsize} KB !";
         }

         if(empty($errors)){

            $random = rand(0,199);
            $this->fileUrl = $random . "_" . date("d-m-Y") . "_" . $filename;
            $destination = $uploadsDir. $random."_".date("d-m-Y") . "_" . $filename;
            move_uploaded_file($filetmpname, $destination);
            $this->filenames[] = $this->fileUrl;

         }else{

           foreach($errors as $error){
            throw new Exception($error);
           }
         }
              } // end for

              return TRUE;
       }

       function getFileUrl()
       {
             return $this->fileUrl;
           }

       function getFilesNames()
       {
             return $this->filenames;
           }

       }


    ?>

和这个html php文件

        <?php include 'header.php';

                if(isset($_POST['add']))
                {
                    $e_title    = $_POST['e_title'];
                    $e_user     = $userRow['user_name'];    

                 try{
                    include 'models/Upload.php';
                    $file = $_FILES['e_img'];
                    $allowedExts = array('jpg','png','gif','jpeg');
                    $uploadsDirectory = "imgupload/";
                    $maxSize = 4000000;
                    $upload = new Upload($file, $allowedExts, $uploadsDirectory, $maxSize);
                    $upload->uploadFiles();
                    $e_img = $uploadsDirectory.$upload->getFileUrl();

                  }catch(Exception $exc){
                    echo'<div class="alert alert-block alert-danger">fail image uploaded</div>';
                    exit;}


                        $insert = $user->insert($e_title,$e_img,$e_user);

                        echo"<div class='alert alert-block alert-success'>Save success</div>";
                        exit;
            }

            ?>
                <form action='newads.php' method="POST" enctype="multipart/form-data">
                   <p>إضافة صور </p>
                    <input type="file" name='e_img[]' id="exampleInputFile">
                    <input  type="submit" name='add' class='btn btn-primary' value='add' />
              </form>


    <?php include 'footer.php'; ?>  

我尝试了这个,但它没有成功

    <form action='newads.php' method="POST" enctype="multipart/form-data">
    <p>إضافة صور </p>
    <input type="file" name='e_img[]' id="exampleInputFile">
    <input type="file" name='e_img2[]' id="exampleInputFile">
    <input type="file" name='e_img3[]' id="exampleInputFile">
    <input  type="submit" name='add' class='btn btn-primary' value='add' />
    </form>

1 个答案:

答案 0 :(得分:1)

您无需在文件字段中增加字段名称。当PHP收到它时,这会破坏数组。改为:(它们都应该是e_img[]

<input type="file" name='e_img[]' id="exampleInputFile">
<input type="file" name='e_img[]' id="exampleInputFile">
<input type="file" name='e_img[]' id="exampleInputFile">