当前位置:首页 > PHP教程 > php图像处理 > 列表

php使用blob存取图片的信息(含源码)

发布:smiling 来源: PHP粉丝网  添加日期:2022-06-28 10:22:26 浏览: 评论:0 

php使用blob存取图片的信息(含源码)

BLOB是一种MySQL数据类型,称为二进制大对象。正如它的名字它是用来存储类似MYSQL二进制和VARBINARY类型的、大量的字符串数据。

MySQL BLOB分类

MySQL BLOB类型 最大存储长度(字节)

TINYBLOB (1)(2 ^ 8)

blob ((2 ^ 16)1)

MEDIUMBLOB ((2 ^ 24)1)

LONGBLOB ((2 ^ 32)1)

在这篇教程中,我们学习如何使用PHP插入和读取MySQL BLOB字段。

首先,我们需要创建一个MySQL表与一个BLOB字段。

  1. CREATE TABLE IF NOT EXISTS `output_images` ( 
  2.  
  3.   `imageId` tinyint(3) NOT NULL AUTO_INCREMENT, 
  4.  
  5.   `imageType` varchar(25) NOT NULL DEFAULT ''
  6.  
  7.   `imageData` mediumblob NOT NULL, 
  8.  
  9.   PRIMARY KEY (`imageId`) 
  10.  

插入数据

将图片信息插入MySQL BLOB字段中。

1、上传图像文件.

2、获取图像属性(图像数据、图像类型等等。)

3、图像文件插入BLOB。

PHP实现脚本:

imageUpload.php

  1. <?php 
  2.  
  3. if(count($_FILES) > 0) { 
  4.  
  5. if(is_uploaded_file($_FILES['userImage']['tmp_name'])) { 
  6.  
  7. mysql_connect("localhost", "root", ""); 
  8.  
  9. mysql_select_db ("phppot_examples"); 
  10.  
  11. $imgData =addslashes(file_get_contents($_FILES['userImage']['tmp_name'])); 
  12.  
  13. $imageProperties = getimageSize($_FILES['userImage']['tmp_name']); 
  14.  
  15. $sql = "INSERT INTO output_images(imageType ,imageData) 
  16.  
  17. VALUES('{$imageProperties['mime']}', '{$imgData}')"; 
  18.  
  19. $current_id = mysql_query($sql) or die("<b>Error:</b> Problem on Image Insert<br/>" . 
  20.  
  21. mysql_error()); 
  22.  
  23. if(isset($current_id)) { 
  24.  
  25. header("Location: listImages.php"); 
  26.  
  27. }}} 
  28.  
  29. ?> 
  30.  
  31. <HTML> 
  32.  
  33. <HEAD> 
  34.  
  35. <TITLE>Upload Image to MySQL BLOB</TITLE> 
  36.  
  37. <link href="imageStyles.css" rel="stylesheet" type="text/css" /> 
  38.  
  39. </HEAD> 
  40.  
  41. <BODY> 
  42.  
  43. <form name="frmImage" enctype="multipart/form-data" action="" method="post" 
  44.  
  45. class="frmImageUpload"> 
  46.  
  47. <label>Upload Image File:</label><br/> 
  48.  
  49. <input name="userImage" type="file" class="inputFile" /> 
  50.  
  51. <input type="submit" value="Submit" class="btnSubmit" /> 
  52.  
  53. </form> 
  54.  
  55. </div> 
  56.  
  57. </BODY> 
  58.  
  59. </HTML> 

执行这个脚本后上传表单将显示如下:

提交表单,PHP获取内容图像的文件并将其作为二进制数据存储到MySQL BLOB列。

显示图片

在浏览器上显示BLOB图像,我们必须:

1、从MySQL BLOB获得图像数据和类型

2、将类型设置为图像(image/jpg, image/gif, …)使用PHP header()函数。

3、输出图像内容。

imageView.php

  1. <?php 
  2.  
  3. $conn = mysql_connect("localhost""root"""); 
  4.  
  5. mysql_select_db("phppot_examples"or die(mysql_error()); 
  6.  
  7. if(isset($_GET['image_id'])) { 
  8.  
  9. $sql = "SELECT imageType,imageData FROM output_images WHERE imageId=" . $_GET['image_id']; 
  10.  
  11. $result = mysql_query("$sql"or die("<b>Error:</b> Problem on Retrieving Image BLOB<br/>" 
  12.  
  13. . mysql_error()); 
  14.  
  15. $row = mysql_fetch_array($result); 
  16.  
  17. header("Content-type: " . $row["imageType"]); 
  18.  
  19. echo $row["imageData"]; 
  20.  
  21.  
  22. mysql_close($conn); 
  23.  
  24. ?> 

上面的PHP代码将显示MySQL BLOB存储的图片。从HTML图像标签我们可以参考这个PHP文件与相应image_id作为参数。例如:

<img src="imageView.php?image_id=<?php echo $row["imageId"]; ?>" />

完成代码如下:

listImages.php

  1. <?php 
  2.  
  3. $conn = mysql_connect("localhost""root"""); 
  4.  
  5. mysql_select_db("phppot_examples"); 
  6.  
  7. $sql = "SELECT imageId FROM output_images ORDER BY imageId DESC"
  8.  
  9. $result = mysql_query($sql); 
  10.  
  11. ?> 
  12.  
  13. <HTML> 
  14.  
  15. <HEAD> 
  16.  
  17. <TITLE>List BLOB Images</TITLE> 
  18.  
  19. <link href="imageStyles.css" rel="stylesheet" type="text/css" /> 
  20.  
  21. </HEAD> 
  22.  
  23. <BODY> 
  24.  
  25. <?php 
  26.  
  27. while($row = mysql_fetch_array($result)) { 
  28.  
  29. ?> 
  30.  
  31. <img src="imageView.php?image_id=<?php echo $row["imageId"]; ?>" /><br/> 
  32.  
  33. <?php 
  34.  
  35.  
  36. mysql_close($conn); 
  37.  
  38. ?> 
  39.  
  40. </BODY> 
  41.  
  42. </HTML> 

感谢大家的阅读,希望大家收益多多。

Tags: blob php存取图片信息

分享到: