How to upload image and save path to database?

坚强是说给别人听的谎言 提交于 2019-12-02 07:52:31

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();

?>

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'
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!