How to upload image and save path to database?

前端 未结 2 909
梦如初夏
梦如初夏 2021-01-28 01:20

I have a page where some images are shown (database driven). Here is the code of my gallery.php :

相关标签:
2条回答
  • 2021-01-28 02:02

    There are plenty of small classes you can download to handle your image uploads. Here's something small I just coded up. It will allow you to set validation for file type and file size. Feel free to make some methods private or hardcode the protected variables in the constructor if you know they'll always be the same. It may need a little work, but you can either use this class or pull out the bits you need to do it procedurally. Forgive any minor errors.

    class ImageUploader{
    
        protected
            $size_limit,
            $allowed_extensions;
            $failed_saves;
    
        public function __construct(int $limit, array $extensions){
            $this->size_limit = $limit;
            $allowed_extensions = $extensions;
        }
    
        public function saveImage(array $images){
            foreach($images as $image){
                if($this->meetsSizeLimit($image['size'])){
                    if($this->hasValidExtension(end(explode(".", $image["name"])))){
                        $this->storeImage($image, $this->getNextImageIndex());
                    }
                    else    $failed_saves[$image["name"] = "Invalid file type.";
                }
                else    $failed_saves["name"] = "File is too large.";
            }
            return $failed_saves;
        }
    
        public function meetsSizeLimit(int $size){
            return $size <= $this->size_limit;
        }
    
        public function hasValidExtension(string $extention){
            return in_array($extension, $this->allowed_extensions)
        }
    
        public function storeImage($image, $unique_id){
            move_uploaded_file($image["tmp_name"], "you_relative_file_path" . $image["name"]);
            rename('your_relative_file_path' . $image["name"], 'your_relative_file_path/img' . $unique_id . '.' . $extension);
            //Place your query for storing the image id and path in table 'eikones'
        }
    
        public function getNextImageIndex(){
            //Code to get the next available image id or MAX(id) from table 'eikones'
        }
    }
    
    0 讨论(0)
  • 2021-01-28 02:05

    After some hours I found a solution. It works. Although I would still be happy to find a second solution (according to the code I first posted here). Here is the second solution :

    form page :

    <form enctype="multipart/form-data" action="insert_image.php" method="post" name="changer">
    <input name="image" accept="image/jpeg" type="file">
    <input value="Submit" type="submit">
    </form>
    

    insert to database page :

    <?php
    
      include 'conf.php';
    
      if ($_FILES["image"]["error"] > 0)
      {
         echo "<font size = '5'><font color=\"#e31919\">Error: NO CHOSEN FILE <br />";
         echo"<p><font size = '5'><font color=\"#e31919\">INSERT TO DATABASE FAILED";
       }
       else
       {
         move_uploaded_file($_FILES["image"]["tmp_name"],"images/" . $_FILES["image"]["name"]);
         echo"<font size = '5'><font color=\"#0CF44A\">SAVED<br>";
    
         $file="images/".$_FILES["image"]["name"];
         $sql="INSERT INTO eikones (auxon, path) VALUES ('','$file')";
    
         if (!mysql_query($sql))
         {
            die('Error: ' . mysql_error());
         }
         echo "<font size = '5'><font color=\"#0CF44A\">SAVED TO DATABASE";
    
       }
    
       mysql_close();
    
    ?>
    
    0 讨论(0)
提交回复
热议问题