繁体   English   中英

PHP tot MySQL图像上传不起作用

[英]PHP tot MySQL image uploading not working

我正在尝试建立一个可以在其中将文件上传到sql数据库的站点,但是它似乎无法正常工作。

这是我的代码;

<html>
    <head>
        <title>Upload an image</title>
    </head>
    <body>
                <form action="upload.php" method="POST" enctype="multipart/form-data">
            File:
            <input type="file" name="Image">
            <input type="submit" value="Upload">
        </form>
        <?php
                    //Connecting to the database
                    mysql_connect("localhost","root","") or die(mysql_error());
                    mysql_select_db("picturedatabase") or die(mysql_error());

                    $file = $_FILES['Image']['tmp_name'];

                    if(!isset($file))
                    {
                        echo "Select an image";
                    }
                    else
                    {
                        $image = addslashes(file_get_contents($_FILES['Image']['tmp_name']));
                        $image_name = addslashes($FILES['Image']['name']);
                        $image_size = getimagesize($FILES['Image']['tmp_name']);
                    }

                    if($image_size==FALSE)
                    {
                        echo "That's not an image.";
                    }
                    else
                    {
                       if(!$insert = mysql_query("INSERT INTO images VALUES('','$image_name','$image')"))
                       {
                           echo "There was a problem uploading the image";
                       }
                       else
                       {
                          $lastid = mysql_insert_id();
                          echo "Image uploaded!<p />Your image:<p /> <img src=show.php?id=$lastid>";
                       } 
                    }
                ?>
    </body>
</html>

当我运行该文件时,将显示表单内容(按钮,我也可以选择一个文件),但是它还说

"Notice: Undefined index: Image in C:\ProgramFiles\Xampp\htdocs\Database\upload.php on line 16
Notice: Undefined variable: image_size in C:\ProgramFiles\Xampp\htdocs\Database\upload.php on line 29"

有人可以告诉我我做错了什么,并帮助我解决此问题吗?

您应该在上传过程中将文件保存在某个文件夹中,并将文件名保存在数据库中,以便稍后可以从数据库中调用文件名并将其链接为要下载的超链接,我正在使用以下代码上传图像在名为files的文件夹中,并将files名保存在数据库中。 最后,我在变量$newname有文件名

    if ($_FILES['file']['name']) {

        $allowedExts = array("gif", "jpeg", "jpg", "png");
        $temp = explode(".", $_FILES["file"]["name"]);
        $extension = end($temp);
        if ((($_FILES["file"]["type"] == "image/gif")
                || ($_FILES["file"]["type"] == "image/jpeg")
                || ($_FILES["file"]["type"] == "image/jpg")
                || ($_FILES["file"]["type"] == "image/pjpeg")
                || ($_FILES["file"]["type"] == "image/x-png")
                || ($_FILES["file"]["type"] == "image/png"))
            && ($_FILES["file"]["size"] < 500000)
            && in_array($extension, $allowedExts)
        ) {
            if ($_FILES["file"]["error"] > 0) {
                echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
            } else {
                $ext = end(explode(".", $_FILES["file"]["name"]));
                $filename = current(explode(".", $_FILES["file"]["name"]));
                $newname = $filename . '_' . time() . '.' . $ext;
                move_uploaded_file($_FILES["file"]["tmp_name"],
                    "files/" . $newname);
            }
        } else {
            echo "<div class='alert alert-success'>Image type or size is not valid.</div>";
        }
    }

我希望这可以帮助你:

<html>
        <head>
                <title>Upload an image</title>
        </head>
        <body>
    <?php
    function output_errors($error) {
        echo '<ul><li><font color="red">'.$error.'</font>/li></ul>';
    }

    if($_POST) {
        //Connecting to the database
        $connect = mysqli_connect("localhost", "root" ,"", "picturedatabase");
        $name = $_FILES['Image']['name'];

        if(!empty($name)) {
            $tmp = $_FILES['Image']['tmp_name'];
            $type = $_FILES['Image']['type'];

            $allowed_type = array('image/jpg', 'image/jpeg', 'image/gif', 'image/png');

            if(!in_array($type, $allowed_type)) {
                $error[] = $type. ' is not allowed file type';
            }
        } else {
            $error[] = 'There are empty fields';
        }

        if(!empty($error)) {
            echo output_errors($error);
        } else if(empty($error)){
            $path = 'images/'.$name;

            $query = mysqli_query($connect, "INSERT INTO `images` (`image`) VALUES ('$path')");

            if(!$query) {
                echo 'Insert into db went wrong';
            } else {
                move_uploaded_file($tmp, $path);
                echo '<font color="green">Upload succesful</font>';
            }
        }
    }
    ?>
            <form action="upload.php" method="POST" enctype="multipart/form-data">
                File:
                <input type="file" name="Image">
                <input type="submit" value="Upload">
            </form>
        </body>
    </html>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM