php上传图片存入数据库示例分享

 更新时间:2014年03月11日 14:25:15   作者:  
这篇文章主要介绍了php上传图片存入数据库示例,需要的朋友可以参考下

大部分人的图片上传都是保存一个路径到数据库,这样在插入时确实快,也符合web的特点,但是在删除时就很麻烦,需要找到文件并删除,该代码能够把代码直接存入数据库,删除时一并删除。请注意:这样的话数据库大小会激增,请酌情使用

表结构 

复制代码 代码如下:

CREATE TABLE `upload` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `type` varchar(20) NOT NULL,
  `data` mediumblob NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

index.html

复制代码 代码如下:

<!doctype html>
    <html>
<head>
    <title>
        Post-Image
    </title>
</head>
<body>
<form action="post.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file" id="file"/>
    <input type="submit" value="OK"/>
</form>
</body>
</html>

post.php

复制代码 代码如下:

<?php
if ($_FILES["file"]["error"] > 0)
{
    echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
    $type = $_FILES["file"]["type"];
    $size = $_FILES['file']['size'];
    $tmp=$_FILES["file"]["tmp_name"];
    $fp = fopen($tmp,'rb');
    $data = bin2hex(fread($fp,$size));
    $dsn='mysql:host=localhost;dbname=test';
    echo '<pre>';
    try{
        $pdo = new PDO($dsn,'root','root');
        $pdo->exec("INSERT INTO `upload`(`type`,`data`) values ('$type',0x$data)");
        $id = $pdo->lastInsertId();
        echo 'upload success!<a href="view.php?id='.$id.'">View</a>';
        $pdo = null;
    }catch (PDOException $e){
        echo $e->getMessage();
    }
    echo '</pre>';
    fclose($fp);
}

view.php

复制代码 代码如下:

<?php
$id = $_GET['id'];
if(is_numeric($id)){
    $dsn='mysql:host=localhost;dbname=test';
    try{
        $pdo = new PDO($dsn,'root','root');
        $rs = $pdo->query('select * from `upload`  where `id`='.$id);
        $row = $rs->fetchAll();
        $data = $row[0];
        header("Content-Type:${data['type']}");
        echo $data['data'];
        $pdo = null;
    }catch (PDOException $e){
        echo $e->getMessage();
    }
}else{
    exit();
}

相关文章

  • PHP中通过trigger_error触发PHP错误示例

    PHP中通过trigger_error触发PHP错误示例

    这篇文章主要介绍了PHP中通过trigger_error触发PHP错误示例,本文介绍了错误抑制符@以及通过 trigger_error 触发 PHP 错误示例,需要的朋友可以参考下
    2015-06-06
  • PHP生成静态页

    PHP生成静态页

    PHP生成静态页...
    2006-11-11
  • Yii框架小部件(Widgets)用法实例详解

    Yii框架小部件(Widgets)用法实例详解

    这篇文章主要介绍了Yii框架小部件(Widgets)用法,结合实例形式详细分析了Yii框架小部件(Widgets)基本功能、创建、使用方法及操作注意事项,需要的朋友可以参考下
    2020-05-05
  • php下几个常用的去空、分组、调试数组函数

    php下几个常用的去空、分组、调试数组函数

    dump() 把数组以数组格式数组,有益于调试 array_chunk() php默认函数 作用是把函数平均分组
    2009-02-02
  • 微信营销平台系统–刮刮乐的开发

    微信营销平台系统–刮刮乐的开发

    最近一直在做微信相关的开发工作,刮刮乐是一个最常见的微信应用了,网上也有很多的教程,本来是不想写这篇博文的,但又怕网友被坑,我还是写一下。
    2014-06-06
  • thinkPHP统计排行与分页显示功能示例

    thinkPHP统计排行与分页显示功能示例

    这篇文章主要介绍了thinkPHP统计排行与分页显示功能,结合实例形式分析了thinkPHP数据库查询与结果分页显示相关操作技巧,需要的朋友可以参考下
    2016-12-12
  • PHP开发中csrf攻击的简单演示和防范

    PHP开发中csrf攻击的简单演示和防范

    CSRF的全名为Cross-site request forgery,它的中文名为 跨站请求伪造(伪造跨站请求【这样读顺口一点】)CSRF是一种夹持用户在已经登陆的web应用程序上执行非本意的操作的攻击方式。相比于XSS,CSRF是利用了系统对页面浏览器的信任,XSS则利用了系统对用户的信任。
    2017-05-05
  • php获取本年、本月、本周时间戳和日期格式的实例代码

    php获取本年、本月、本周时间戳和日期格式的实例代码

    这篇文章主要介绍了php获取本年、本月、本周时间戳和日期格式,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • Smarty模板变量与调节器实例详解

    Smarty模板变量与调节器实例详解

    这篇文章主要介绍了Smarty模板变量与调节器,结合实例形式详细分析了Smarty模板变量与调节器基本概念、分类、使用方法及相关操作注意事项,需要的朋友可以参考下
    2019-07-07
  • PHP捕获Fatal error错误的方法

    PHP捕获Fatal error错误的方法

    这篇文章主要介绍了PHP捕获Fatal error错误的方法,使用register_shutdown_function来捕获Fatal error错误,需要的朋友可以参考下
    2014-06-06

最新评论