一.存储图片的数据表结构:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
--
-- 表的结构 `image` -- CREATE TABLE IF NOT EXISTS `image` ( `id` int ( 3 ) NOT NULL AUTO_INCREMENT, `name` varchar( 100 ) CHARACTER SET utf8 NOT NULL , `pic` blob NOT NULL , `type` varchar( 50 ) CHARACTER SET utf8 NOT NULL , `date` datetime NOT NULL , PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT= 1 ; -- -- 转存表中的数据 `image` -- |
(1)连接数据库文件:conn.php:
PHP Code
1
2 3 4 5 6 |
<?php
$conn = mysql_connect( 'localhost' , 'root' , '' ); mysql_select_db( 'study' , $conn); mysql_query( "SET NAMES UTF-8" ); ?> |
(2)图片上传并以二进制保存到数据库文件:upload.php
PHP Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<?php
include ( './conn.php' ); if ( $_POST [ 'submit' ]) { if ( $_FILES [ 'image' ][ 'size' ]) { $names = $_FILES [ 'image' ][ 'name' ]; $arr = explode( '.' , $names); $name = $arr[ 0 ]; //图片名称 $date = date( 'Y-m-d H:i:s' ); //上传日期 $fp = fopen( $_FILES [ 'image' ][ 'tmp_name' ], 'rb' ); $type = $_FILES [ 'image' ][ 'type' ]; if (!$fp) { showInfo( '读取图片失败!' ); } else { $image = addslashes(fread($fp, filesize( $_FILES [ 'image' ][ 'tmp_name' ]))); if ($image) { $q = "insert into image (name, pic, type, date) values ('$name','$image','$type','$date')" ; $result = mysql_query($q); if ($result) { showInfo( '上传成功!' ); } else { showInfo( '上传失败!' ); } } else { showInfo( '请选择要上传的文件!' ); } } } else { showInfo( '请选择要上传的文件!' ); } } function showInfo($info) { echo "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />" ; echo "<meta http-equiv='refresh' content='1;url=index.php'>" ; echo "</head>" ; echo "<body>" . $info . "……</body>" ; echo "</html>" ; } ?> |
三.从数据库中读取以二进制保存的图片并显示:image.php
PHP Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php
include ( './conn.php' ); $id = $_GET [ 'id' ]; $sql = "select * from image where id='$id'" ; $result = mysql_query($sql, $conn); if (!$result) die ( "读取图片失败!" ); $num = mysql_num_rows($result); if ($num < 1 ) die ( "暂无图片" ); $data = mysql_result($result, 0 , 'pic' ); $type = mysql_result($result, 0 , 'type' ); mysql_close($id); Header( "Content-type: $type" ); echo $data; ?> |
四.上传并显示图片的页面:index.php
PHP Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
<?php
include ( './conn.php' ); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > <html xmlns= "http://www.w3.org/1999/xhtml" lang= "en_US" xml:lang= "en_US" > <!-- * Created on 2012-10-20 * * To change the template for this generated file go to * Window - Preferences - PHPeclipse - PHP - Code Templates --> <head> <meta http-equive= "Content-Type" content=text/html charset=utf-8> <title> </title> </head> <body> <form method= 'post' action= './upload.php' enctype= "multipart/form-data" > <input type= "file" name= "image" /> <input type= "submit" name= "submit" value= "上传" /> </form> <!-----------显示图片---------------------> <table> <?php $ret = mysql_query( 'select * from image order by id desc' ); if ($ret) { while ($row = mysql_fetch_array($ret)) { ?> <tr> <td style= 'width:170px;' > <img src= "image.php?id=<?php echo $row[id]; ?> " width=" 170 " height=" 150 " border=" 0 "> <div style= 'text-align:center;' ><?php echo $row[ 'name' ]; ?></div> <?php echo $row[ 'date' ]; ?> </td> </tr> <?php } } ?> </table> <!-----------/显示图片---------------------> </body> </html> |