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 相关文章推荐
我的论坛源代码(五)
Oct 09 PHP
ajax+php打造进度条代码[readyState各状态说明]
Apr 12 PHP
PHP高自定义性安全验证码代码
Nov 27 PHP
一个基于phpQuery的php通用采集类分享
Apr 09 PHP
取得单条网站评论以数组形式进行输出
Jul 28 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
Nov 20 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
Dec 15 PHP
php堆排序实现原理与应用方法
Jan 03 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
Jun 10 PHP
php JWT在web端中的使用方法教程
Sep 06 PHP
Laravel如何自定义command命令浅析
Mar 23 PHP
关于Yii中模型场景的一些简单介绍
Sep 22 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自动生成印有用户信息的名片
2016/08/01 PHP
java script编程起步(第三课)
2007/01/10 Javascript
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
将nodejs打包工具整合到鼠标右键的方法
2013/05/11 NodeJs
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
JavaScript中奇葩的假值示例应用
2014/03/11 Javascript
网站接入QQ登录的两种方法
2014/07/22 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
BootStrap selectpicker
2016/06/20 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
详解vue.js之props传递参数
2017/12/12 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
python读写ini文件示例(python读写文件)
2014/03/25 Python
python Django框架实现自定义表单提交
2016/03/25 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
2018/11/30 Python
python2和python3在处理字符串上的区别详解
2019/05/29 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
Python中实现一行拆多行和多行并一行的示例代码
2020/09/06 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
策划主管的工作职责
2013/11/24 职场文书
冰淇淋店创业计划书范文
2013/12/27 职场文书
拓展培训心得体会
2014/01/04 职场文书
初中生自我鉴定
2014/02/04 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
九九重阳节致辞
2015/07/31 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python