博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP把图片存入数据库(非路径)【待测试】
阅读量:4357 次
发布时间:2019-06-07

本文共 1702 字,大约阅读时间需要 5 分钟。

大部分人的图片上传都是保存一个路径到数据库,这样在插入时确实快,也符合web的特点,但是在删除时就很麻烦,需要找到文件并删除,该代码能够把代码直接存入数据库,删除时一并删除。

请注意:这样的话数据库大小会激增,请酌情使用

1、表

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;

TinyBlob             最大 255 

Blob                  最大 65K 
MediumBlob     最大 16M 
LongBlob            最大 4G
 

2、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>

3、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);
}

4、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();
}

 

转载于:https://www.cnblogs.com/killallspree/p/3595622.html

你可能感兴趣的文章
Camera Binning Mode
查看>>
Django模板系统
查看>>
位(Bit)与字节(Byte)
查看>>
关于两次指针(struct型)传参数的问题
查看>>
bootstrap
查看>>
java原始类型排序_海牛部落 java 系列教程:(5)数组和排序
查看>>
字符串的模式匹配java_字符串模式匹配KMP算法
查看>>
java 异常的分类并举例_java异常分类与处理
查看>>
android 调用java url地址_Android调用默认浏览器打开指定Url的方法实例
查看>>
linux查看io日志,linux 查看硬盘io工具 iotop 解析
查看>>
linux打开软件中心,如何在Ubuntu软件中心安装第三方软件 | MOS86
查看>>
linux rhcs配置文件,RedHatLinux 集群配置 RHCS
查看>>
linux如何查看jmp esp地址,Linux pwn从入门到熟练(二)
查看>>
自己制作Linux镜像,CentOS 6.5 Docker自制CentOS镜像
查看>>
linux配置scp交互传输,Linux间传输文件的几种方法scp、sftp
查看>>
linux安装nginx映射目录,centos8自定义目录安装nginx(教程详解)
查看>>
linux cpu scheduler,A Temporal Partition-Based Linux CPU Scheduler
查看>>
c语言怎么写最小公倍数的函数,C语言 · 最小公倍数
查看>>
c语言中的头文件string.h的作用,C语言常用头文件及库函数——string.h
查看>>
c语言字符-1代表什么,玩儿转C语言:符号和字符(1)
查看>>