如何使用数据库从文件夹中检索图像?

时间:2016-12-28 23:09:48

标签: php

如何使用数据库中的文件名检索服务器上文件夹中的相应文件?

目前我有一个评论部分正在运作但不确定如何检索与评论对应的图片。

我的数据库: 评论

结构: cid A_I小学 uid varchar(128) 日期日期时间 消息文本 iamges varchar(50)

HTML:

<?php 
echo "<form method='POST' enctype='multipart/form-data' action='".setComments($conn)."'><br>

        <input type='hidden' name='uid' value='Anonymous'>
        <input type='hidden' name='date' value='".date('Y-m-d H:i:s')."'>

        Select a file:<br><input type='file' name='image' id='image'><br<br><br>
        Comment:<br> <textarea name='message'></textarea><br><br>
        <button type='submit' name='commentSubmit'>Upload</button><br><br><br>

</form>";
getComments($conn); 
?>

功能:

<?php

function setComments($conn) {
    if (isset ($_POST['commentSubmit'])) {
        $uid = $_POST['uid'];
        $date = $_POST['date'];
        $message = $_POST['message'];
        $file_name = $_FILES['image']['name'];

        $sql = "INSERT INTO comments (uid, date, message, images) values ('$uid','$date','$message','$file_name')";
        $result = mysqli_query($conn, $sql);
    }
}       
        if(isset($_FILES['image'])){
            $errors= array();
            $file_name = $_FILES['image']['name'];
            $file_size = $_FILES['image']['size'];
            $file_tmp = $_FILES['image']['tmp_name'];
            $file_type = $_FILES['image']['type'];
            $tmp = explode('.', $file_name);
            $file_ext =  end($tmp);

            $expensions= array("jpeg","jpg","png"."gif");

            if(in_array($file_ext,$expensions)=== false){
             $errors[]="extension not allowed, please choose a JPEG, GIF, or PNG file.";
            }

            if($file_size > 2097152) {
             $errors[]='File size must be excately 2 MB';
            }

            if(empty($errors)==true) {
                move_uploaded_file($file_tmp,"uploads/".$file_name);
                echo "Successfully uploaded file!";

            }else{
                print_r($errors);
    }

}
function getComments($conn) {    

    $sql = "SELECT * FROM comments ORDER BY date DESC LIMIT 10";
    $result = mysqli_query($conn, $sql);
    while ($row = $result->fetch_assoc()) {
        echo $row['uid']."<br>";
        echo $row['date']."<br><br>";
        echo $row['message']."<br><br>";
    }
}

1 个答案:

答案 0 :(得分:0)

该文件的名称存在于images列的数据库中。与echo datemessage值相同的方式 - 您可以echo图片名称。

如果您希望浏览器将其显示为图像(而不仅仅是文本),则应使用<img>标记:

echo "<img src=\"uploads/{$row['images']}\" /><br /><br />";

我在上面的代码中使用了uploads文件夹(因为您将文件上传到该文件夹​​中)。

  

请注意,您的代码容易受到SQL注入攻击!详细了解bobby tables,您可以使用this question了解如何避免这些内容。