And*_*mar 121
首先,您创建一个MySQL表来存储图像,例如:
create table testblob (
image_id tinyint(3) not null default '0',
image_type varchar(25) not null default '',
image blob not null,
image_size varchar(25) not null default '',
image_ctgy varchar(25) not null default '',
image_name varchar(50) not null default ''
);
Run Code Online (Sandbox Code Playgroud)
然后你可以写一个图像到数据库,如:
/***
* All of the below MySQL_ commands can be easily
* translated to MySQLi_ with the additions as commented
***/
$imgData = file_get_contents($filename);
$size = getimagesize($filename);
mysql_connect("localhost", "$username", "$password");
mysql_select_db ("$dbname");
// mysqli
// $link = mysqli_connect("localhost", $username, $password,$dbname);
$sql = sprintf("INSERT INTO testblob
(image_type, image, image_size, image_name)
VALUES
('%s', '%s', '%d', '%s')",
/***
* For all mysqli_ functions below, the syntax is:
* mysqli_whartever($link, $functionContents);
***/
mysql_real_escape_string($size['mime']),
mysql_real_escape_string($imgData),
$size[3],
mysql_real_escape_string($_FILES['userfile']['name'])
);
mysql_query($sql);
Run Code Online (Sandbox Code Playgroud)
您可以在网页中显示数据库中的图像:
$link = mysql_connect("localhost", "username", "password");
mysql_select_db("testblob");
$sql = "SELECT image FROM testblob WHERE image_id=0";
$result = mysql_query("$sql");
header("Content-type: image/jpeg");
echo mysql_result($result, 0);
mysql_close($link);
Run Code Online (Sandbox Code Playgroud)
请注意,从DB提供图像通常比从磁盘提供图像要慢得多.
你将开始一个PHP进程,打开一个数据库连接,让数据库从同一磁盘读取图像数据,将RAM作为文件系统读取缓存,通过几个套接字和缓冲区传输,然后通过PHP推出,默认情况下是它是不可缓存的,并增加了分块HTTP编码的开销.
OTOH现代Web服务器只需很少的优化内核调用(内存映射文件和传递给TCP堆栈的内存区域)即可为图像提供服务,因此它们甚至不会复制内存,几乎没有开销.
这是在一台机器上并行提供20或2000个图像之间的区别.
所以不要这样做,除非你绝对需要事务完整性(实际上甚至可以只用DB和文件系统清理例程中的图像元数据完成),并且知道如何改进PHP的HTTP处理以适合图像.
我个人不会将图像存储在数据库中,而是将其放在一个无法从外部访问的文件夹中,并使用数据库来跟踪其位置。保持数据库大小减小,您可以使用 PHP 将其包含在内。如果没有 PHP 就无法访问该图像
我的意见是,不建议将图像直接存储到数据库中,而是建议将图像位置存储在数据库中.当我们比较两个选项时,在数据库中存储图像对于安全目的是安全的.缺点是
如果数据库已损坏,则无法检索.
与其他选项相比,从db检索图像文件很慢.
另一方面,在db中存储图像文件位置将具有以下优点.
它很容易检索.
如果存储了多个图像,我们可以轻松检索图像信息.
| 归档时间: |
|
| 查看次数: |
277665 次 |
| 最近记录: |