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

 4604

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


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字段。

(PS:T不错的PHP Q扣峮:276167802,验证:csl)

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

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

插入数据

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

1、上传图像文件.

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

3、图像文件插入BLOB。

PHP实现脚本:

imageUpload.php

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

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

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

显示图片

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

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

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

3、输出图像内容。

imageView.php

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

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

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

完成代码如下:

listImages.php

  1. <?php
  2. $conn = mysql_connect("localhost", "root", "");
  3. mysql_select_db("phppot_examples");
  4. $sql = "SELECT imageId FROM output_images ORDER BY imageId DESC";
  5. $result = mysql_query($sql);
  6. ?>
  7. <HTML>
  8. <HEAD>
  9.     <TITLE>List BLOB Images</TITLE>
  10.     <link href="imageStyles.css" rel="stylesheet" type="text/css" />
  11. </HEAD>
  12. <BODY>
  13. <?php
  14. while($row = mysql_fetch_array($result)) {
  15. ?>
  16. <img src="imageView.php?image_id=<?php echo $row["imageId"]; ?>" /><br/>
  17. <?php
  18. }
  19. mysql_close($conn);
  20. ?>
  21. </BODY>
  22. </HTML>

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



本文网址:https://www.zztuku.com/detail-7857.html
站长图库 - php使用blob存取图片的信息(含源码)
申明:如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐