繁体   English   中英

如何在PHP中将MySQL Blob字段恢复或访问为jpeg

[英]How can i restore or access MySQL Blob field into jpeg in PHP

如何恢复或访问MySQL blob字段,以便我可以使用PHP代码将其预览为HTML? PHP中是否有可用的函数,因此我可以将这些blob字段存储为jpeg。

存储很容易。 假设你有一个带有BLOB字段的mysql表用于图片....

上传图像后,将文件内容存入内存,然后插入blob字段。

<?php 

 $file = '/tmp/MyImg.jpg'; 
 // you migh want to escape it just in case
 $data = file_get_contents($file); 
 // Insert into database
 $sql = "INSERT INTO my_picture_table (`picture_blob_field`) VALUES ('$data');"

 ?>

检索也很简单。 制作单独的文件以从blob加载图像更简单。

<?php
// file = getPicture.php

$id = (int) $_GET['id'];
$sql = "SELECT `picture_blob_field` FROM `my_picture_table` WHERE `id` = $id"
// query the db
// store data into var $picData

// Set the content type and print the data.
header("Content-type: img/jpeg");
echo $picData;

?>

这就是你所要做的......现在在HTML页面中创建一个

<img scr="getPicture.php?id=PICTURE_ID alt="blah blah" />

请注意,上面的示例是针对JPEG类型的,将文件类型存储在db中,然后使用它来指定带有header("Content-type: img/xxx")文件类型header("Content-type: img/xxx")

希望这能解决你的问题。


我找到了一个关于在mysql中存储图像示例/教程 如果上面不清楚通过代码看看(它的分页,那么看看其他页面)

上面提到的代码容易受到SQL注入攻击,并且在任何情况下都会在JPEG的第一个字节处失败,该字符恰好与引号的ASCII代码相匹配(这应该很快发生)。 我确实看到你的评论“你可能”想要逃避数据,但应该强调的是,在一个大的二进制文件中,几乎肯定会有一个匹配引号的字节。 这不是“以防万一”,几乎是每一个案例。

对JPEG数据 id参数(来自用户,可能是恶意的)使用mysql_real_escape_string()。 更好的是,使用PDO和参数替换来避免这种混乱。

此外,内容类型必须是image / jpeg,而不是img / jpeg。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM