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 文件类型判断代码
Mar 13 PHP
php设计模式 Composite (组合模式)
Jun 26 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
May 07 PHP
PHP使用JSON和将json还原成数组
Feb 12 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
利用php输出不同的心形图案
Apr 22 PHP
php版微信公众号接口实现发红包的方法
Oct 14 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
May 05 PHP
PHP封装的page分页类定义与用法完整示例
Dec 24 PHP
Centos7 Yum安装PHP7.2流程教程详解
Jul 02 PHP
php curl发送请求实例方法
Aug 01 PHP
PHP基于openssl实现非对称加密代码实例
Jun 19 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 模拟get_headers函数的代码示例
2013/04/27 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
php中call_user_func函数使用注意事项
2014/11/21 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
ext jquery 简单比较
2010/04/07 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
详解redux异步操作实践
2018/08/15 Javascript
ES6中let 和 const 的新特性
2018/09/03 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
python创建线程示例
2014/05/06 Python
python通过socket查询whois的方法
2015/07/18 Python
django自带serializers序列化返回指定字段的方法
2019/08/21 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
什么是.net
2015/08/03 面试题
斯福泰克软件测试面试题
2015/02/16 面试题
如何通过jdbc调用存储过程
2012/04/19 面试题
地质灾害防治方案
2014/05/14 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书