zoukankan      html  css  js  c++  java
  • 插入和显示数据库中的图片(处理二进制数据)

    7.5.4 插入和显示数据库中的图片(处理二进制数据)

    数据库应用程序,特别是基于Web的数据库应用程序,常常会涉及到图片信息的存储和显示。通常我们使用的方法是将所要显示的图片存在特定的目录下,在数据库中保存相应的图片的名称,然后在PHP中查询数据库获得文件路径并在HTML文件中引用。

    但是,如果我们想动态的显示图片,上述方法就不能满足需要了。因此必须把图片存入数据库,然后通过编程动态地显示我们需要的图片。

    在实际操作中,可以利用PHP将图片插入到数据库中,在数据库中,图片是以二进制格式存储的。随后你也可以使用PHP将图片数据读出来并显示在网页上。

    使用HTML表单可以将客户端的图片文件作为请求传递给服务端,PHP可以读取请求中的上载文件数据,并将数据保存在数据库中。

    1.将图片插入数据库

    下面我们就来看一个范例,了解怎样使用表单提交图片文件,并保存到数据库中。这个范例有两个文件组成。

    upload.htm

    这个网页包含一个表单,用于提交图片文件,它的代码如下:

    代码清单7-6

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
    //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>提交表单</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    </head>
    <body>
    <form action="insertPic.php" method="post" enctype="
    multipart/form-data" name="mainForm" id="mainForm">
    <input type="file" name="myFile" />
    <br />
    <input type="submit" name="Submit" value="Submit"/>
    </form>
    </body>
    </html>

    保存到Web根目录下,在浏览器中请求,可以看到如图7-33所示的效果:

     
    图7-33 文件上传表单

    insertPic.php

    这个文件用来将提交的文件数据保存到数据库中,代码如下:

    代码清单7-7

    <?php
    //由于上传过来的图片被保存在一个临时文件中,所以
    //我们仅需要读取该文件就可以获取传过来的图片
    $fp = fopen($_FILES["myFile"]["tmp_name"],"rb");
    $buf = addslashes(fread($fp,$_FILES["myFile"]["size"])); 
    //创建一个PDO对象
    $dbh = new PDO("mysql:host=localhost;port=
    3306;dbname=myDatabase", "root", "verysecret");
    //执行插入操作并将结果保存在一个变量中
    $result = $dbh->query("INSERT INTO employees
    (firstName,lastName,EmpType,age,picture) VALUES
    ('myFirst','myLast','myEmpType',50,'$buf')");
    //获取影响的行数
    if ($result->rowCount() >0) {
       echo("数据已插入。");
    } else {
       echo("不能执行插入操作。");
    }
    //显式的关闭PDO连接
    $dbh = NULL;
    ?>

    将这个文件也保存到Web根目录下。

    测试

    现在我们可以测试一下功能,在图7-33中显示的网页上,我们使用"浏览"按钮选择一个图片文件,然后单击"Submit"按钮,这就会打开insertPic.php文件执行,如果中间没有出错,那么就算执行成功了。

    关于insertPic.php文件的基本工作原理我们现在是清楚的,但是对于如何分离出提交表单中的文件数据可能还不清楚,不过没关系,我们将在后面的章节再详细介绍如何处理文件上载。

    2.显示数据库中的图片数据

    在将图片保存到数据库中后,我们就可以读取它并显示出来,也可以将它保存为文件。下面我们就来看怎样显示数据库中保存的图片数据。

    我们新建一个PHP文件,命名为showPic.php,编写代码如下:

    代码清单7-8

    <?php
    //创建一个PDO对象
    $dbh = new PDO("mysql:host=localhost;port=3306;
    dbname=myDatabase", "root", "verysecret");
    //设置字符编码
    $dbh->exec("SET CHARACTER SET gb2312");
    //执行查询并将结果保存在一个变量中
    $result = $dbh->query("SELECT * FROM employees
    WHERE firstName = 'myFirst'");
    //获取第一行数据
    $row = $result->fetch();
    //写出数据记录,首先查看是否存在记录
    if(!empty($row)){
    header("Content-type: image/JPEG",true);
    echo($row["picture"]);
    }
    //显式的关闭PDO连接
    $dbh = NULL;
    ?>

    将这个文件也保存到Web根目录下,然后在浏览器中请求,就会得到如图7-34所示的效果(图中显示的图片是我们提交的图片):

     

    图7-34 显示数据库中的图片数据

    http://book.51cto.com/art/200809/89421.htm

  • 相关阅读:
    Git最强总结!
    强烈IDEA这些插件,让你的开发速度飞起来!
    MySQL执行计划【explain】详解
    设置php在apache下加载ini配置文件路径,~和curl扩展无法加载的问题
    远程连接mysql数据慢的问题
    在windows下,git webhook使用php拉取代码的学习总结
    centos 添加epel、remi仓库和ELRepo仓库
    windows下mysql数据库表名大小写不敏感
    .gitignore无效,不能过滤某些文件
    编译php时,出错bad interpreter
  • 原文地址:https://www.cnblogs.com/fengju/p/6173911.html
Copyright © 2011-2022 走看看