使用存储在数据库中的“path / filename”显示存储在服务器中的图像

时间:2017-02-24 17:10:46

标签: php image codeigniter

我只是想问一下是否有人可以向我解释为什么我不能将我的图像显示到我正在创建的网站上。我将'path / filename'存储在数据库的其中一列中。图像图像存储在服务器中。

<?php foreach $data as $val{?>
   <img src="<?php echo base_url();?><?php echo $val->file;?>">
<?php }?>

控制器

$path = $_FILES["addFile"]["name"];
$extension = pathinfo($path, PATHINFO_EXTENSION);

$file_sc = 'uploads/screenshots/'.date("Ymdhms.").$extension;

$new_name = date("Ymdhms").".".$extension;
$target_dir = "./uploads/screenshots/";
$target_file = $target_dir.$new_name;

$type = $_FILES["addFile"]["type"];
$allowed = array('image/jpeg', 'image/png', 'image/gif');

if($_FILES["addFile"]["name"]){
    if(!in_array($type,$allowed)){
        echo 'File type is not allowed.';
    } else {
        move_uploaded_file($_FILES["addFile"]["tmp_name"],$target_file);
        $this->MyModel->add($file_sc);
    }

模型

function add_kudos($file_sc)
{
  $query =  $this->db->query("insert into tbl_kudos(file) values('$file_sc');
}

这就是它在数据库中的样子 - &gt; '上传/截图/ 20170224040231.jpg'

服务器中的文件名 - &gt; 20170224040231.jpg

图像未显示。即使我的网址是正确的。 有人可以向我解释为什么会这样吗?我是新手。

3 个答案:

答案 0 :(得分:0)

第一个文件名与第二个文件名不同!

您可以使用urlencode()然后打印图片网址

答案 1 :(得分:0)

创建一个名为showimg.php的文件:

<?php
    $img = $_REQUEST['img'];
    $finfo = finfo_open(FILEINFO_MIME_TYPE); 
    $mime=finfo_file($finfo, $img) ;
    finfo_close($finfo);
    header("Content-type: $mime");
    $fp = fopen($img, 'rb');
    fpassthru($fp);
?>  

使用您的代码在名为$ myimgpath的var中获取要从数据库中显示的图像的路径,然后使用以下内容:

<img src="<?php echo base_url()."showimg.php?img=".$myimgpath;?>">

答案 2 :(得分:0)

试试这个

<?php foreach ( $data as $val ) { ?>
   <img src="<?php echo base_url( $val->file ); ?>">
<?php } ?>