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
一个捕获函数输出的函数
Feb 14 PHP
php创建多级目录代码
Jun 05 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
ThinkPHP模板自定义标签使用方法
Jun 26 PHP
浅谈PDO的rowCount函数
Jun 18 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
php处理单文件、多文件上传代码分享
Aug 24 PHP
深入讲解PHP的对象注入(Object Injection)
Mar 01 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
Mar 30 PHP
php + ajax 实现的写入数据库操作简单示例
May 16 PHP
Laravel服务容器绑定的几种方法总结
Jun 14 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
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
php生成随机颜色的方法
2014/11/13 PHP
PHP实现链表的定义与反转功能示例
2018/06/09 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
JavaScript Scoping and Hoisting 翻译
2012/07/03 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
深入理解Vuex 模块化(module)
2017/09/26 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
2019/08/09 Javascript
微信小程序 可搜索的地址选择实现详解
2019/08/28 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
Python中的localtime()方法使用详解
2015/05/22 Python
python自动翻译实现方法
2016/05/28 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
Python loguru日志库之高效输出控制台日志和日志记录
2020/03/07 Python
keras 解决加载lstm+crf模型出错的问题
2020/06/10 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
银行青年文明号事迹材料
2014/05/31 职场文书
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
浅谈Python数学建模之整数规划
2021/06/23 Python
Python 数据可视化之Bokeh详解
2021/11/02 Python