Php 未从数据库接收图像
数据库中存储的所有其他信息都在网站上,而不是BLOB图像。数据库保存图像,就好像您按下它将显示正在存储的图像一样。谢谢 GetImage.phpPhp 未从数据库接收图像,php,html,mysql,Php,Html,Mysql,数据库中存储的所有其他信息都在网站上,而不是BLOB图像。数据库保存图像,就好像您按下它将显示正在存储的图像一样。谢谢 GetImage.php <?php include "connection.php"; $ID = $_GET["ID"]; $SQLCommand = "SELECT * FROM products WHERE ID = '$ID'"; $Result = mysqli_query($con, $SQLCommand); $row = mysqli_fetch_
<?php
include "connection.php";
$ID = $_GET["ID"];
$SQLCommand = "SELECT * FROM products WHERE ID = '$ID'";
$Result = mysqli_query($con, $SQLCommand);
$row = mysqli_fetch_assoc($Result);
header("Content-type:" . $row["Name"]);
echo $row["Image"];
?>
相反,您可以使用
<?php
include "connection.php";
$SQLCommand = "SELECT * FROM products";
$Result = mysqli_query($con, $SQLCommand);
while($row = mysqli_fetch_assoc($Result)){
echo "<p id='p1'>" . $row["Name"] .
"<br></p><p id='p3'>£" . $row["Price"] .
"<br><br><img src=" . base64_encode($row['image']) . " width=10%>" .
"<br><a href=productdetails.php?ID=" . $row["ID"] . ">Details</a></p>".
"<p id='p2'><a href=BasketAdd.php?ID=" . $row["ID"] . ">Add to Basket</a><br><br>";
}
?>
相反,您可以使用
<?php
include "connection.php";
$SQLCommand = "SELECT * FROM products";
$Result = mysqli_query($con, $SQLCommand);
while($row = mysqli_fetch_assoc($Result)){
echo "<p id='p1'>" . $row["Name"] .
"<br></p><p id='p3'>£" . $row["Price"] .
"<br><br><img src=" . base64_encode($row['image']) . " width=10%>" .
"<br><a href=productdetails.php?ID=" . $row["ID"] . ">Details</a></p>".
"<p id='p2'><a href=BasketAdd.php?ID=" . $row["ID"] . ">Add to Basket</a><br><br>";
}
?>
数据库中图像的问题通常与图像在数据库中的存储方式有关。
图像可以存储为二进制文件,但如果存储为base64,则问题较少。
我需要看到的是在数据库中存储图像的代码
给定一个名为“image”的文件输入
或作为更新:
UPDATE `table` SET `image`='$img' WHERE ...
在表中,字段图像将具有“文本”类型
但这还不够…
您需要知道图像的尺寸和类型。
if( is_uploaded_file($_FILES['image1']['tmp_name']) || !($_FILES['image1']['error'] !== UPLOAD_ERR_OK)){
$save = false;
switch(strtolower($_FILES['image1']['type'])){
case 'image/jpeg':
$image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
case 'image/png':
$image = @imagecreatefrompng($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
case 'image/gif':
$image = @imagecreatefromgif($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
default:
$img = @getimagesize($_FILES['image']['tmp_name']);
switch(strtolower($img['mime'])){
case 'image/jpeg':
$image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
$type = 'jpg';
if ($image !== false){$save = true;break;}
case 'image/png':
$image = @imagecreatefrompng($_FILES['image']['tmp_name']);
$type = 'png';
if ($image !== false){$save = true;break;}
case 'image/gif':
$image = @imagecreatefromgif($_FILES['image']['tmp_name']);
$type = 'gif';
if ($image !== false){$save = true;break;}
default:
$filename = $_FILES['image']['name'];
$ext = substr($filename,-3);
switch(strtolower($ext)){
case 'jpg':
$image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
case 'gif':
$image = @imagecreatefromgif($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
case 'png':
$image = @imagecreatefrompng($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
default:
$image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
$image = @imagecreatefrompng($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
$image = @imagecreatefromgif($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
}
}
}
}
获取宽度和高度
$width = imagesx($image);
$height = imagesy($image);
$base64 = base64_encode($image);
把它们放在一起形成一个HTML”;
数据库中图像的问题通常与图像在数据库中的存储方式有关。
图像可以存储为二进制文件,但如果存储为base64,则问题较少。
我需要看到的是在数据库中存储图像的代码。
给定一个名为“image”的文件输入
或作为更新:
UPDATE `table` SET `image`='$img' WHERE ...
在表中,字段图像将具有“文本”类型
但这还不够…
您需要知道图像的尺寸和类型。
if( is_uploaded_file($_FILES['image1']['tmp_name']) || !($_FILES['image1']['error'] !== UPLOAD_ERR_OK)){
$save = false;
switch(strtolower($_FILES['image1']['type'])){
case 'image/jpeg':
$image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
case 'image/png':
$image = @imagecreatefrompng($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
case 'image/gif':
$image = @imagecreatefromgif($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
default:
$img = @getimagesize($_FILES['image']['tmp_name']);
switch(strtolower($img['mime'])){
case 'image/jpeg':
$image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
$type = 'jpg';
if ($image !== false){$save = true;break;}
case 'image/png':
$image = @imagecreatefrompng($_FILES['image']['tmp_name']);
$type = 'png';
if ($image !== false){$save = true;break;}
case 'image/gif':
$image = @imagecreatefromgif($_FILES['image']['tmp_name']);
$type = 'gif';
if ($image !== false){$save = true;break;}
default:
$filename = $_FILES['image']['name'];
$ext = substr($filename,-3);
switch(strtolower($ext)){
case 'jpg':
$image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
case 'gif':
$image = @imagecreatefromgif($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
case 'png':
$image = @imagecreatefrompng($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
default:
$image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
$image = @imagecreatefrompng($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
$image = @imagecreatefromgif($_FILES['image']['tmp_name']);
if ($image !== false){$save = true;break;}
}
}
}
}
获取宽度和高度
$width = imagesx($image);
$height = imagesy($image);
$base64 = base64_encode($image);
把它们放在一起形成一个HTML”;
Hi@thewebmstr不幸的是,这不起作用。感谢您的帮助。此外,您应该创建一个列,该列仅存储图像的二进制类型,并且base64_encode()可以将二进制格式编码为图像格式。您的格式不正确。它应该是src=“data:image/jpg;”。base64,base64_编码($row['image'])。'“/>
。那么gif和png呢?但这没关系,因为在将图像保存到表中时更可能出现问题。您好@thewebmstr很遗憾,这不起作用,感谢您尝试提供帮助。此外,您应该创建一个列,仅存储图像的二进制类型和base64_encode()无法将二进制格式编码为图像格式。您的格式不正确。它应该是src=“data:image/jpg;“.base64,base64_编码($row['image'])。”/>
。那么gif和png呢?但这没关系,因为当图像保存到表中时,问题更可能出现。我在第一篇文章中添加了插入图像表单,我指的是插入或更新表的SQL。这并不像看上去那么容易。如果有人上传的文件不是图像怎么办?那类型呢?你不知道;我不想限制用户,因为你不知道如何处理多种图像类型,是吗?你打不过这种例行公事。文件扩展名可能是错误的,HTTP mime类型可能是错误的,但如果是jpg、gif或png,则此例程将正确执行。如果不是,$save
将为false。您需要知道类型,因此当您使用base64时,您需要填写data:image/$type;base64,
我在我引用SQL插入或更新表的第一篇文章中添加了插入图像表单。这并不像看上去那么容易。如果有人上传的文件不是图像怎么办?那类型呢?你不知道;我不想限制用户,因为你不知道如何处理多种图像类型,是吗?你打不过这种例行公事。文件扩展名可能是错误的,HTTP mime类型可能是错误的,但如果是jpg、gif或png,则此例程将正确执行。如果不是,$save
将为false。您需要知道类型,因此当您使用base64时,您需要填写data:image/$type;base64,
警告:当使用mysqli
时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将$\u POST
或$\u GET
数据直接放入查询中,如果有人试图利用您的错误,这可能非常有害。警告:使用mysqli
时,您应该使用并将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将$\u POST
或$\u GET
数据直接放入查询,如果有人试图利用您的错误,这可能非常有害。
$width = imagesx($image);
$height = imagesy($image);
$base64 = base64_encode($image);
$img = "<img width=\"$width \" height=\"$height\" src=\"data:image/$type;base64,$base64\" alt =\"image\"/>";