[英]How can I get the contents of a document and upload to a Mysql blob field using PHP?
[英]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.