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

感谢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数据库存储的图片  " >

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值