Php显示来自数据库的图像

时间:2014-04-08 09:14:21

标签: php database image

我正在使用CMS,允许用户插入文章,如果他希望他可以上传相应文章的图像,文章文本工作正常,问题是图像没有显示,即使我没有上传任何图像“数组”这个词出现在图像所在的地方,我的文字输入与文章文本相同。这些图像存储在mysql中,类型为“blob”。有小费吗?感谢

PHP:

    <?php
session_start();
include_once('../includes/connection.php');
if(isset($_SESSION['logged_in'])) {
    // display add page
        if (isset($_POST['title'], $_POST['content'])) {
        $title = $_POST['title'];
        $content = $_POST['content'];
        $image = $_FILES['image']['name'];

            if (empty($title) || empty($content)) {
                $error = 'Todos os campos têm de ser preenchidos!';
            }

            else {
                $query = $pdo->prepare('INSERT INTO articles(article_title, article_content, article_img, article_timestamp) VAlUES (?, ?, ?, ?)');

                $query->bindValue(1, $title);
                $query->bindValue(2, $content);
                $query->bindValue(3, $image);
                $query->bindValue(4, time());

                $query->execute();

                header('Location:index.php');
            }
        }

}
        else {
        header('Location:index.php');
    }
    ?>

    <html>
    <head>
        <title>AdminPT</title>
        <meta charset="UTF-8">
        <link rel ="stylesheet" href="../assets/style.css"/>
    </head>

        <body>
            <div class="container">
                CMS
                <br>

                <h4 id ="add">Adicionar Artigo</h4>

                <?php
                if (isset($error)) { ?>
                    <small style="color:#aa0000"><?php echo $error; ?></small>
                <?php } ?>

                <form action="add.php" method="post" autocomplete="off" enctype="multipart/form-data">
                    <input id="title" type="text" name="title" placeholder="Título"/><br><br>
                    <textarea id="content" rows="15" placeholder="Conteúdo" name="content"></textarea>
                    <input type="file" name="image"/><br><br>
                    <input id="addBtn" type="submit" value="Adicionar Artigo"/>
                </form>
                <a id="back" href="../admin">&larr; Voltar</a>
            </div>
        </body>
    </html>

显示内容(HTML):

<div id="news">
        <?php foreach ($articles as $article) { ?>
        <div><h2><?php echo utf8_encode($article['article_title']); ?></h2><div id="newsImg"><?php echo $article['article_img']; ?></div><br><span id="date">Publicado 
                <?php
                    setlocale(LC_ALL, 'pt_BR.utf8', 'Portuguese_Brazil');
                    //setlocale(LC_ALL, NULL);
                    date_default_timezone_set('Europe/Lisbon');

                    $uppercaseMonth = ucfirst(gmstrftime('%B'));
                    echo utf8_encode(strftime( '%a, '.$uppercaseMonth.' %d de %Y'/* - %H:%M'*/, $article['article_timestamp']));
                ?></span><p><?php echo utf8_encode($article['article_content']); ?><br><br><span id="print"><a onclick="javascript:window.print();" href="#">Imprimir</a></span><span id="link"><a href="#">Enviar link</a></p></div>
                <?php } ?>

    </div>

3 个答案:

答案 0 :(得分:0)

请将此行($ image = $ _FILES ['image'];)更改为$ image = $ _FILES ['image'] [“name”];

答案 1 :(得分:0)

除了$ image = $ _FILES ['image'] [“name”];你需要在它之前添加其余的相对/绝对路径,例如

$image = "/uploadedimages/" . $_FILES['image']['name'];

答案 2 :(得分:0)

a)当您提交表单时,图像存储在服务器的临时空间中,因此首先需要将该图像移动到项目目录中,还可以在将图像移动到目录时更改图像名称

b)成功移动图像后,将图像名称存储在数据库中

c)当你需要显示图像时,通过添加类似(http://localhost/sample-project)和图像目录(上传)和图像名称(图像名称保存在数据库中)的baseurl来制作完整的http url图像,这样它变为http://localhost/sample-project/uploads/image1.jpg

https://gist.github.com/taterbase/2688850