从php显示图像

时间:2015-10-14 21:36:52

标签: php html image

我正在尝试在html文件中显示图像。到目前为止,我使用了一个网址:http://placehold.it/400x300,它工作正常,现在当我尝试用数据库中的图像替换它时,它没有显示任何内容。图像路径是:D:/uwamp/www/project/upload/tcf_animal17.jpg我尝试了不同的路径,但它不起作用。我不确定问题出在哪里。我打印了数据,这是一条好路径

HTML

 <?php foreach ($data[0] as $film):?>
            <div class = <?= $film['id_film'] ?> >
              <div class=  "col-lg-3 col-md-4 col-xs-6 thumb filmDiv" >

                    <a class="thumbnail " id = "filmShow" href= <?= "/project/admin/showFilm/" . $film['id_film']?>>
                        <p> <?= $film['title_film'] ?> </p>
                        <img class="img-responsive overlay" src= <?= $film['img'] ?>  alt="">  

                    </a>
                    <a class="" href =<?=  "/project/admin/update/" . $film['id_film'] ?> >
                        <button name="upd" id="upd" type="button" class="btn btn-default">Update</button>
                    </a>

                    <a class="delete"name= <?= $film['id_film'] ?> >
                        <button id="delete"  type="button"  class="btn btn-default">Delete</button>
                    </a>
                </div>
            </div>
        <?php endforeach; ?>

Controler:

public function GetLastFilms()
{
    $films = $this->film->getFilms();
    $lastFilms = $this->film ->getLastFilm();

    $dict[0] = $films;
    $dict[1] = $lastFilms;

    return $dict;
}

public function index() 
{   
    if(isset($_SESSION['login']))
    {
        $this->generateView($this->GetLastFilms());
    }else
    {
       header('Location: /project/admin/login');
    }
}

protected function generateView($data = array())
{
    $classeControler = get_class($this);
    $controler = str_replace("Controler", "", $classeControler);
    $view = new View($this->action, $controler);
    $view->generate($data);        
}

查看:

public function generate($data) 
{
    $contenu = $this->generateFile($this->viewFile, $data);
    $racineWeb = Configuration::get("racineWeb", "/");
    $view = $this->generateFile('View/Template/index.php',
            array('title' => $this->viewTitle, 'contenu' => $contenu,
                'racineWeb' => $racineWeb));
    echo $view;
}

private function generateFile($viewFile, $data) 
{
    if (file_exists($viewFile)) 
    {
        extract($data);
        ob_start();
        require $viewFile;
        return ob_get_clean();
    }
    else 
    {
        throw new Exception("can't find '$viewFile'");
    }
}

1 个答案:

答案 0 :(得分:3)

您的问题是数据库中图像的路径存储为来自您的计算机的本地路径(D:/uwamp/www/project/upload/tcf_animal17.jpg),要正确显示它,它需要是相对于您的网络根目录的路径服务器文件。

例如,如果您的网络服务器文档根目录是D:/uwamp/www,那么您需要存储的图片的路径应为project/upload/tcf_animal17.jpg

当然,如果您无法将图像存储在Web根目录中,那么您始终可以选择直接转储内容,但这对性能来说并不是一个好主意。原因:

<?php
    $mime = image_type_to_mime_type(exif_imagetype(string $image_path));
    $data = "data:$mime;base64," . base64_encode(file_get_contents($image_path)); ?>
?>
<img src="<?= $data ?>">

此代码非常粗糙,不进行错误检查 - 您需要为生产级应用程序添加该代码。