【问题标题】:Php diplay image from database数据库中的php显示图像
【发布时间】:2014-04-08 09:14:21
【问题描述】:

我正在开发允许用户插入文章的 CMS,如果他愿意,他可以为通讯作者上传图片,文章文本可以正常工作,问题是图片没有显示,即使我没有上传任何图像,“数组”一词出现在图像应该出现的位置,我采用与文章文本输入相同的逻辑。这些图像以“blob”类型存储在 mysql 中。有小费吗?谢谢

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>

【问题讨论】:

  • 可能是你缺少图片保存路径
  • 图片保存路径?我怎么知道?对不起我的无知
  • 您需要将图像保存在某个位置或目录中
  • 没用,只是出现了“imgs/imagename.jpg”字样

标签: php database image


【解决方案1】:

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

【讨论】:

  • 谢谢这是一个开始,尽管现在它显示的是图像名称 (image.jpeg) 而不是图像本身
【解决方案2】:

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

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

【讨论】:

  • 谢谢,但我怎么知道那条路径?
  • 实际图像没有存储在 mysql 中,只是图像详细信息的任何数组。图像将存储在特定文件夹中,该文件夹的路径将取决于您的 CMS。
  • 我在 php 文件的同一个文件夹上创建了一个 imgs 文件夹,但它仍然显示为“imgs/logoChi.png”而不是实际图像
  • 如果您的图片路径正确,则需要添加 img 标签 "/>
【解决方案3】:

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

b) 成功移动图片后,将图片名称存入数据库

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 2018-04-02
    • 2012-10-12
    相关资源
    最近更新 更多