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
PHP6 mysql连接方式说明
Feb 09 PHP
php使用curl存储cookie的示例
Mar 31 PHP
destoon实现资讯信息前面调用它所属分类的方法
Jul 15 PHP
php中把美国时间转为北京时间的自定义函数分享
Jul 28 PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 PHP
PHP技术开发微信公众平台
Jul 22 PHP
php去除二维数组的重复项方法
Nov 03 PHP
老生常谈PHP面向对象之解释器模式
May 17 PHP
Laravel中的Auth模块详解
Aug 17 PHP
php图片裁剪函数
Oct 31 PHP
PHP数字金额转换成中文大写显示
Jan 05 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中的(伪)多线程与多进程
2013/07/01 PHP
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
codeigniter发送邮件并打印调试信息的方法
2015/03/21 PHP
从新浪弄下来的全屏广告代码 与使用说明
2007/03/15 Javascript
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
JS模拟面向对象全解(二、类型与赋值)
2011/07/13 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
jQuery中trigger()与bind()用法分析
2015/12/18 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
javaScript基础详解
2017/01/19 Javascript
js 获取图像缩放后的实际宽高,位置等信息
2017/03/07 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
Python使用zip合并相邻列表项的方法示例
2018/03/17 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
电大毕业生自我鉴定
2013/11/10 职场文书
环保倡议书500字
2014/05/15 职场文书
升职演讲稿范文
2014/05/23 职场文书
单位在职证明书
2014/09/11 职场文书
学习型党组织心得体会
2014/09/12 职场文书
技术股份合作协议书
2014/10/05 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
python办公自动化之excel的操作
2021/05/23 Python