如何在CodeIgniter中显示数据库中的图像?

时间:2012-02-07 13:49:39

标签: mysql image-processing imageview codeigniter-2 image-uploading

我正在使用CodeIgniter 2.1.0和MySQL数据库。我已经通过表单上传了一张图片并成功将其存储在uploads目录中,并且我还成功地将图像的完整路径存储在我的数据库中。但是我通过调用数据库中的完整路径来显示图像时遇到问题。

以下是我上传的代码:

$image_path = realpath(APPPATH . '../uploads');

$config = array(
    'allowed_types' => 'jpeg|png|gif|jpg', 
    'upload_path' => $image_path, 
    'max_size' => 2097152, 
    'overwrite' => TRUE, 
    'file_name' => '_' . $i . '_'
);

$this -> load -> library('upload', $config);

当我在图像数据库中存储图像的完整路径时,它看起来像这样

C:/wamp/www/my_project/uploads/_1_.jpg

如果我尝试

<img src="<?php echo $data['screenshot'];?>" />
//($data['screenshot'] refers to the image location retrieved from database)

这在我的视图文件中,没有显示图像。我究竟做错了什么?请有人告诉我。什么是标准程序?

3 个答案:

答案 0 :(得分:3)

在您的数据库中,如果我理解正确,您将图像存储为C:/wamp/www/my_project/uploads/_1_.jpg

因此,当您回显img src属性的图像路径时,您将拥有

这不会像您机器上的本地路径那样工作。我的文件系统上没有该图像。图像需要可以在Web服务器上访问。 (就像你的index.php文件一样)

所以你需要将图像存储为:

uploads/_1_.jpg

然后执行<img src="<?php echo $data['screenshot'];?>" />

或将图像存储为:

_1_.jpg和 然后做

<img src="<?php echo sprintf("uploads/%s", $data['screenshot']);?>" />

编辑:要明确:你存储的地方是正确的。但是,您不需要DB中的完整路径,只需要Web服务器路径。

答案 1 :(得分:2)

控制器:

function displayimage($Id=FALSE){
if ($Id)) 
{
    $image = $this->MMarches->getImage($Id);
    header("Content-type: image/jpeg");
    print($image);
}        }

型号:

function getImage($Id){
$data = '';
$Q = $this->db->query("SELECT photo FROM tableWHERE phptoID=".$Id);
if ($Q->num_rows())
{
    $data = $Q->row_array();
    $data = $data['MA_PHOTO']
    $Q->free_result();  
}
return $data;} 

您的观点:

src="<?php echo site_url("controller_name/display_image/$image_id"); ?>" 

替代模型:

function getImage($Id){
$Q = $this->db->query("SELECT photo FROM tableWHERE phptoID=".$Id);
   if ($Q->num_rows())       {
           $data = $Q->row_array();
           $data = $data['MA_PHOTO'];
           $Q->free_result();  
   }    
   $size = $data->size();        
   $ret = $data->read($size);     
   return (isset($ret)) ? $ret : '';
 }

答案 2 :(得分:1)

要在网络浏览器中显示图像,您必须提供该图像的URL而不是图像的PATH。

以下代码不显示任何图片

<img src="C:/wamp/www/my_project/uploads/_1_.jpg"/> 

以下代码使用了映像的URL,这里给出了localhost服务器名,你必须用localhost替换你的服务器地址。

<img src="http://localhost/www/my_project/uploads/_1_.jpg"/>