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 相关文章推荐
Classes and Objects in PHP5-面向对象编程 [1]
Oct 09 PHP
php的header和asp中的redirect比较
Oct 09 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
PHP的Yii框架入门使用教程
Feb 15 PHP
Symfony2学习笔记之控制器用法详解
Mar 17 PHP
PHP图片加水印实现方法
May 06 PHP
探究Laravel使用env函数读取环境变量为null的问题
Dec 06 PHP
使用PHPMailer发送邮件实例
Feb 15 PHP
yii2局部关闭(开启)csrf的验证的实例代码
Jul 10 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 14 PHP
PHP 加密 Password Hashing API基础知识点
Mar 02 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
基于simple_html_dom的使用小结
2013/07/01 PHP
php实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
2016/09/13 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
2017/10/26 Javascript
面包屑导航详解
2017/12/07 Javascript
JointJS JavaScript流程图绘制框架解析
2019/08/15 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python 计算文件的md5值实例
2017/01/13 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
Python实现图像的垂直投影示例
2020/01/17 Python
Python 实现PS滤镜中的径向模糊特效
2020/12/03 Python
size?丹麦官网:英国伦敦的球鞋精品店
2019/04/15 全球购物
车间班组长岗位职责
2013/11/13 职场文书
高中生物教学反思
2014/02/05 职场文书
会计专业应届生自荐信
2014/02/07 职场文书
公司年会抽奖活动主持词
2014/03/31 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
2014年保密工作总结
2014/11/22 职场文书
学校标语口号大全
2015/12/26 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
利用python调用摄像头的实例分析
2021/06/07 Python