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 相关文章推荐
使用PHP维护文件系统
Oct 09 PHP
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
Jun 08 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
Jul 01 PHP
php启用zlib压缩文件的配置方法
Jun 12 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
Aug 21 PHP
PHP向浏览器输出内容的4个函数总结
Nov 17 PHP
laravel学习教程之存取器
Jul 30 PHP
PHP的反射机制实例详解
Mar 29 PHP
php使用curl实现ftp文件下载功能
May 16 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 PHP
PHP实现简单用户登录界面
Oct 23 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
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
php中ob_flush函数和flush函数用法分析
2015/03/18 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
JS的数组的扩展实例代码
2008/07/09 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
jQuery+css实现百度百科的页面导航效果
2014/12/16 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
用jQuery获取table中行id和td值的实现代码
2016/05/19 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
微信小程序实现联动选择器
2019/02/15 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
python 判断自定义对象类型
2009/03/21 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
python单例模式实例解析
2018/08/28 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
2019/08/08 Python
Python imageio读取视频并进行编解码详解
2019/12/10 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
django中嵌套的try-except实例
2020/05/21 Python
keras打印loss对权重的导数方式
2020/06/10 Python
什么是Linux虚拟文件系统VFS
2015/08/25 面试题
2014年销售经理工作总结
2014/12/01 职场文书
环境卫生整治简报
2015/07/20 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang