牛骨文教育服务平台(让学习变的简单)
博文笔记

php对oracle图片数据的存储和读取

创建时间:2007-08-15 投稿人: 浏览次数:1170

感谢http://blog.chinaunix.net/u/13284/showart_332694.html的作者和另外一名不知名作者,终于解决php对oracle图片数据的存储和读取的问题,以下代码根据其上2位作者的代码实现:

--建表

 

create table PICTURES
(
  ID          NUMBER,
  DESCRIPTION VARCHAR2(100),
  MIME        VARCHAR2(128),
  PICTURE     BLOB
)

 --建立sequence

 

create sequence PIC_SEQ

 

--图片的上传及插入数据库,文件名pic_test.php

 

<?php
  if( !isset( $_FILES["lob_upload"] ) )
  {
?>
<form action="pic_test.php" method="POST" enctype="multipart/form-data">
上传: <input type="file" name="lob_upload"><br>
<input type="submit" value="提交">-<input type="reset">
</form>
<?php
  } 
  else
  {
   if( !isset( $_FILES["lob_upload"]["tmp_name"] ) ||  $_FILES["lob_upload"]["tmp_name"] == ""  )
   {
       echo "临时文件名不存在";
    exit;
   }
   else
   {
    $lob_upload = $_FILES["lob_upload"]["tmp_name"];
    $description = "test_pic";
    $lob_upload_type = $_FILES["lob_upload"]["type"];
   }
   
   $user = "";//用户名,自行修改
   $password = "";//口令,自行修改
   $db = "";//数据库sid,自行修改
   
   $conn = ocilogon( $user, $password, $db );

   $stmt = ociparse( $conn, "INSERT INTO PICTURES ( id, description, mime, picture )
                     VALUES ( pic_seq.NEXTVAL, "$description", "$lob_upload_type", EMPTY_BLOB( ) ) RETURNING picture INTO :PICTURE");
   
   $lob = ocinewdescriptor( $conn, OCI_D_LOB );
   
   OCIBindByName( $stmt, ":PICTURE", &$lob, -1, OCI_B_BLOB );
   
   OCIExecute( $stmt, OCI_DEFAULT );
   
   if( $lob -> savefile( $lob_upload ) )
   {
       OCICommit($conn);
       echo "上传成功<br>";
   }
   else
   {
       echo "上传失败<br>";
   }
   
   OCIFreeDesc( $lob );
   OCIFreeStatement( $stmt );
   OCILogoff( $conn );
  }
?>

--图片数据的读取,文件名pic.php

 

<?
   $user = "";//用户名,自行修改
   $password = "";//口令,自行修改
   $db = "";//数据库sid,自行修改
   
   $pictureid = $_REQUEST["id"];
   $conn = ocilogon( $user, $password, $db );
   $stmt = OCIParse( $conn,"SELECT * FROM PICTURES WHERE ID = $pictureid");
   OCIExecute($stmt);
   if( OCIFetchInto($stmt, $result) ) 
   { 
    Header("Content-type: ".$result[0]);
    echo $result[3]->load();
    }
?>

--图片的显示

 

<IMG SRC="pic.php?id=36" ALT="oracle数据库存储的图片 ">

 

 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。