2016-05-10 30 views
0

Codeigniterを使用してOracleデータベースからHUGEBLOBイメージを取得しています。画像を取得すると、リソースID#45が与えられます。Oracleデータベースからhugeblobイメージを取得します。Recorse id、PHP、Codeigniter

私の質問は、

なぜリソースIDが指定されていますか? 文字列に変換する方法とこのイメージを表示するには?

私のコードは、私がここで立ち往生しています、私を助けてください、

public function get_image() 
{ 
    $reg = $this->session->userdata['user'][0]['REG#']; 
    /*$this->db->select("PIC"); 
    $query = $this->db->get_where("ADM_STUDENT",array("REG#" => "BET-FA07-012"));*/ 

    $query = $this->db->query("select * from ADM_STUDENT WHERE REG# = 'BEE-FA15-066'"); 
    $row = $query->row_array(); 
    echo "<pre>"; 
    print_r($row); 
    //$this->output->set_header('content-type: image/jpeg'); 
    //print $row['PIC']; 
    //echo '<img src="data:image/jpeg;base64,'.base64_encode($row['PIC']).'"/>'; 
} 

です。

答えて

0

PDO documentation on handling LOBSを参照してください:

PDOはあなたPDOStatement::bindParam()PDOStatement::bindColumn()呼び出しでPDO::PARAM_LOB型コードを使用して、この大規模なデータ型を操作することができます。 PDO::PARAM_LOBは、データをストリームとしてマップするようにPDOに指示します。そのため、PHP Streams APIを使用してデータを操作できます。 「データベースからの画像を表示する」

Example 1ショー:

$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2'); 
$stmt = $db->prepare("select contenttype, imagedata from images where id=?"); 
$stmt->execute(array($_GET['id'])); 
$stmt->bindColumn(1, $type, PDO::PARAM_STR, 256); 
$stmt->bindColumn(2, $lob, PDO::PARAM_LOB); 
$stmt->fetch(PDO::FETCH_BOUND); 

header("Content-Type: $type"); 
fpassthru($lob); 

あなたのコード内で使用されるオブジェクトは、そのフレームワークの一部である場合は、おそらく、CodeIgniterのドキュメントとの相互参照する必要があります。

返されたリソースは、(サンプルコードのように)タイプstreamであるならば、あなたはちょうどそうのようなstream_get_contentsを使用することができるかもしれない:

$this->output->set_header('content-type: image/jpeg'); 
echo stream_get_contents($row['PIC']); 
関連する問題