我已成功将图像存储在mySql中。我想要检出并在网站上显示一个能够放大它的href按钮。
这是我的数据库表结构
-- Table structure for table `poster`
--
CREATE TABLE `image` (
`img_id` int(11) NOT NULL auto_increment,
`img_name` varchar(32) NOT NULL,
`img` blob NOT NULL,
`img_type` varchar(32) NOT NULL,
`img_size` int(255) NOT NULL,
PRIMARY KEY (`img_id`)
)
放置显示图像
<div class="col-md-5 text-dimension">
<?php
$con=mysql_connect("localhost","root","");
mysql_select_db("isiti");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysql_query("SELECT * FROM poster ORDER BY year DESC LIMIT 0, 5000");
while($row = mysql_fetch_array($result))
{
$id=$row['img_id'];
echo '<a href="img_disp.php?image_id='.$id.'" data-lightbox="image-1" title="©ISITI-CoERI"><center><img src="img_disp.php?image_id='.$id.'" alt="poster1" width="200" height="250"><br></a><br><br>';
echo '<span class=right><a href="edit_form.php?id='.$id.'">[edit]</a>
<a name="delete" id="delete" href="public_delete.php?id='.$id.'">[delete]</a></span>';
}
?>
这是img_disp.php
<?php
// Connect to the database
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="isiti"; // Database name
$tbl_name="poster"; // Table name
$conn = mysql_connect("$host", "$username", "$password");
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
if (isset($_GET["image_id"]) && !empty($_GET["image_id"]))
{
$id =$_GET["image_id"];
}
mysql_select_db($db_name);
$sql="SELECT * from poster where id='$id'";
$query=mysql_query($sql) or die(mysql_error());
while($result=mysql_fetch_array($query)){
header('Content-type:'.$result['img_type'].'');
echo $result['img'];
header('Content-Disposition: inline; filename="'.$result['img_name'].'"');
}
?>
问题是......图像没有显示出来。两者或弹出。
答案 0 :(得分:0)
我认为问题是你正在使用echo,它意味着处理字符串。您也可以考虑使用其他方式来存储图像,而不是使用mysql。无论如何,正确的方法是打开文件流,然后将数据放入其中。此外,您还需要一个单独的文件来处理图片,因为您只能更改整个文件的标题。这意味着您需要一个文件来为图片创建一个显示页面,另一个文件用于提取图片。
$write=fopen("php://output","w");
fwrite($write,$results['img']);
fclose($write);
另外,我不确定你的结构是否适合mysql结果。
答案 1 :(得分:0)
我建议将所有图像存储在磁盘[文件系统]而不是MySQL中。 您还可以加密图像并将其存储在.dat文件中。这将确保您的图像安全。
在MySQL中只存储该特定图像的路径。从MySQL检索记录时
go to the image path
get image
decrypt it (Optional, Only if you have encrypted it before)
and display the image..