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 4.2书写安全的脚本
Oct 09 PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 PHP
PHP面向对象程序设计之接口用法
Aug 20 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
php字符串分割函数用法实例
Mar 17 PHP
php版微信小店API二次开发及使用示例
Nov 12 PHP
PHP巧妙利用位运算实现网站权限管理的方法
Mar 12 PHP
php实现的二叉树遍历算法示例
Jun 15 PHP
laravel框架中间件 except 和 only 的用法示例
Jul 12 PHP
thinkphp5实现微信扫码支付
Dec 23 PHP
Thinkphp 框架扩展之类库扩展操作详解
Apr 23 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
Aug 24 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 chmod 函数与批量修改文件目录权限
2010/05/10 PHP
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
学习PHP的数组总结【经验】
2016/05/05 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
2017/02/17 PHP
JavaScript 动态改变图片大小
2009/06/11 Javascript
javascript写的一个链表实现代码
2009/10/25 Javascript
js以对象为索引的关联数组
2010/07/04 Javascript
JS数学函数Exp使用说明
2012/08/09 Javascript
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
2017/02/14 Javascript
如何快速上手Vuex
2017/02/14 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
vue多次循环操作示例
2019/02/08 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
15分钟上手vue3.0(小结)
2020/05/20 Javascript
Python列表操作方法详解
2020/02/09 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
2020/04/20 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
在Python中实现字典反转案例
2020/12/05 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
智乐游戏测试笔试题
2014/05/21 面试题
致跳远运动员加油稿
2014/02/11 职场文书
中学教师教育感言
2014/02/21 职场文书
利群广告词
2014/03/20 职场文书
布达拉宫的导游词
2015/02/02 职场文书
校园新闻稿范文
2015/07/18 职场文书
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB