2013-12-09 24 views
0

我想显示一个存储在oracle数据库中的图像作为BLOB数据类型。这是我的模型代码如何将存储在oracle数据库中的codeigniter上的图像显示为BLOB类型?

function viewblobData() { 
    $user = $this->session->userdata('user_logged_in'); 
    $returnLobValue = ''; 
    if (!empty($user)) { 
     $conn = $this->db->conn_id; 
     $sql = "SELECT * FROM OP_REG_IMAGE WHERE REG_NO = '$user'"; 
     $stmt = oci_parse($conn, $sql); 
     oci_execute($stmt) 
       or die("Unable to execute query<br/>"); 

     while ($row = oci_fetch_assoc($stmt)) { 
      $returnLobValue = $row['PAT_IMAGE']->load(); 
      header("Content-type: image/jpg"); 
     } 
    } 
    return $returnLobValue; 
} 

,这是显示在视图

<?php echo $this->MY_MODEL->viewblobData(); ?> 

但它显示“图像http://localhost/.....无法显示,因为它包含错误”

如果我删除行header("Content-type: image/jpg");然后显示如下整页:

�M�t9UYG�G��d���~��5 �V�W��jժ�I�P��l6;��Po�ߖ�]��o�_���v��]o7{���Xr?_� ��bp��F3�s>ߙ�K)��f_�w��9����Z#���i�:�V�Y�h�=�����o���{��px=����o��fk���:>����~u�=��w��~9������y�]^����ٹ_��� 

谁能帮忙?

+0

单程 - 在db中存储路径,并将图像/文件保存在您的目录中。从db获取路径,并将这些路径放在''标签中可以解决问题。 – Suleman

+0

您是否正在使用标签? – Suleman

+0

谢谢,我知道这个过程,但我需要显示来自数据库的图像,因为已经存储了一些图像。我没有使用标签。 – Saif

回答

0

您可以使用图片库: - e.g

$img = imagecreatefromstring($row['PAT_IMAGE']); 

    if ($img !== false) { 
     $image_new_name = 'sig_' . time() . '.png'; 
     $image_path = 'upload/' . $image_new_name; 
     $image_name = $ROOT_DIR . '/' . $image_path; 
     if (!file_exists($image_name)) { 
      imagepng($img, $image_name); 
      imagedestroy($img); 
     } else { 
      $image_new_name = 'new_' . $image_new_name; 
      $image_path = 'upload/new_' . $image_new_name; 
      $image_name = $ROOT_DIR . '/' . $image_path; 
      imagepng($img, $image_name); 
      imagedestroy($img); 
      } 

该代码会产生从你的数据镜像到提供dir。然后使用该图像进行显示。请享用。 :)

+0

抱歉,仍然显示”The image“http:// myhost/appointment/user/........”无法显示,因为它包含错误“。 – Saif

+0

请使用'base64_encode',同时将图像数据保存为db,数据可能会被加密。然后解码数据观看时间。 – Suleman

相关问题