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


Posted in PHP onMarch 11, 2014

大部分人的图片上传都是保存一个路径到数据库,这样在插入时确实快,也符合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 相关文章推荐
怎样在UNIX系统下安装php3
Oct 09 PHP
PHP 面向对象 PHP5 中的常量
May 05 PHP
php设计模式 Mediator (中介者模式)
Jun 26 PHP
PHP中strtotime函数使用方法详解
Nov 27 PHP
PHP 设计模式之观察者模式介绍
Feb 22 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
PHP 清空varnish 缓存的详解(包括指定站点下的)
Jun 20 PHP
微信自定义菜单的创建/查询/取消php示例代码
Aug 05 PHP
php观察者模式应用场景实例详解
Feb 03 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
php封装单文件上传到数据库(路径)
Oct 15 PHP
PHP引擎php.ini参数优化深入讲解
Mar 24 PHP
php使用反射插入对象示例分享
Mar 11 #PHP
php数组编码转换示例详解
Mar 11 #PHP
使用Discuz关键词服务器实现PHP中文分词
Mar 11 #PHP
PHP输出缓存ob系列函数详解
Mar 11 #PHP
php初始化对象和析构函数的简单实例
Mar 11 #PHP
PHP连接MySQL的2种方法小结以及防止乱码
Mar 11 #PHP
php调用c接口无错版介绍
Mar 11 #PHP
You might like
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
小文件php+SQLite存储方案
2010/09/04 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
JavaScript Scoping and Hoisting 翻译
2012/07/03 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
jquery实现企业定位式导航效果
2018/01/01 jQuery
收集前端面试题之url、href、src
2018/03/22 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
python机器学习之贝叶斯分类
2018/03/26 Python
python 解压pkl文件的方法
2018/10/25 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
flask的orm框架SQLAlchemy查询实现解析
2019/12/12 Python
Python新手如何理解循环加载模块
2020/05/29 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
python mock测试的示例
2020/10/19 Python
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
校园达人秀策划书
2014/01/12 职场文书
2014年情人节活动方案
2014/02/16 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
企业承诺书怎么写
2014/05/24 职场文书
学生会工作感言
2015/08/07 职场文书
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL
python双向链表实例详解
2022/05/25 Python