2015-10-14 2 views
0

Я пытаюсь отобразить изображение в html-файле. До сих пор я использовал URL-адрес: http://placehold.it/400x300, он работал нормально, теперь, когда я пытаюсь заменить его изображением из базы данных, он ничего не отображает. путь изображения: D: /uwamp/www/project/upload/tcf_animal17.jpg Я пробовал с другим путем, но он не работает. Я не уверен, где проблема. я напечатал данные, это хорошей тропеПоказать изображение с php

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

Попробуйте использовать полный путь к изображению, например * http: //www.example.com/my/path/to/image.png*. – Script47

ответ

3

Ваша проблема заключается в том, что путь к изображению в база данных хранится как локальный путь от вашего устройства (D:/uwamp/www/project/upload/tcf_animal17.jpg), где для отображения правильного y это должен быть путь относительно корня ваших документов веб-сервера.

Например, если ваш корень документа веб-сервера D:/uwamp/www, то путь изображения, который необходимо сохранить, должен быть project/upload/tcf_animal17.jpg.

Конечно, если вы не можете получить изображение, которое будет храниться в веб-корень, то у вас всегда есть возможность просто сбросить содержимое непосредственно, однако это действительно не очень хорошая идея, по соображениям производительности:

<?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 ?>"> 

Этот код очень груб и не требует проверки ошибок - вам нужно добавить это для приложения уровня производства.

Смежные вопросы