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将时间差转换为字符串提示
Sep 07 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
Nov 25 PHP
解析PHP中如何将数组变量写入文件
Jun 06 PHP
php xml常用函数的集合(比较详细)
Jun 06 PHP
ThinkPHP3.1.3版本新特性概述
Jun 19 PHP
PHP常用编译参数中文说明
Sep 27 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
Jan 22 PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 PHP
PHP图片加水印实现方法
May 06 PHP
yii2使用ajax返回json的实现方法
May 14 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
Jul 10 PHP
PHP代码覆盖率统计详解
Jul 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的配置文件php.ini
2006/10/09 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
ExtJS 工具栏 分页事件参数
2010/03/05 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
nodejs教程之入门
2014/11/21 NodeJs
JavaScript限定图片显示大小的方法
2015/03/11 Javascript
JQuery鼠标移到小图显示大图效果的方法
2015/06/10 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
2017/01/21 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
Node.js设置定时任务之node-schedule模块的使用详解
2020/04/28 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Django与遗留的数据库整合的方法指南
2015/07/24 Python
Python 性能优化技巧总结
2016/11/01 Python
Python之时间和日期使用小结
2019/02/14 Python
对python while循环和双重循环的实例详解
2019/08/23 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
司仪主持词两篇
2014/03/22 职场文书
中班下学期幼儿评语
2014/12/30 职场文书
以权谋私检举信范文
2015/03/02 职场文书
导游词之永泰公主墓
2019/12/04 职场文书
pandas中DataFrame重置索引的几种方法
2021/05/24 Python