gpt4 book ai didi

php - 如何显示 Blob 图像

转载 作者:行者123 更新时间:2023-11-29 11:32:50 24 4
gpt4 key购买 nike

我正在尝试插入并显示多个blob图像,但由于某些错误,它没有出现在页面上,并且多个图像也没有被保存,代码如下:test1.php[插入 Blob 图像]:

$conn  = mysqli_connect("localhost", "root", "root", "test");

for($i=0; $i<count($_FILES["userfile"]["name"]); $i++){

$imageName = mysqli_real_escape_string($conn, $_FILES["userfile"]["name"]);
$imageData = mysqli_real_escape_string($conn, $_FILES["userfile"]["tmp_name"]);
$imageType = mysqli_real_escape_string($conn, $_FILES["userfile"]["type"]);
$image = file_get_contents($imageData);
$image = base64_encode($image);
if($imageName!=''){

mysqli_query($conn, "INSERT INTO files SET mime = '".$imageName."', data= '".$image."' ");
$result = array("insert_res"=>"110");
echo json_encode($result);

}else{
$result = array("insert_res"=>"111");
echo json_encode($result);
}
}

?>
<!DOCTYPE html>
<html>
<head>
<title>Image Upload</title>
</head>
<body>
<!-- <form name="" action="<?php echo $_SERVER["PHP_SELF"]; ?>" id="" method="POST" enctype="multipart/form-data">
<input type="file" name="image" id="image" />
<input type="submit" name="submit" value="Upload" />-->
<img src="test_dis.php?id=1" />
<!--</form>-->

</body>
</html>

test_disp.php[显示数据库中的图像]:

$conn  = mysqli_connect("localhost", "root", "root", "test");


if(isset($_GET['id'])){
$id = mysqli_real_escape_string($conn, $_GET['id']);

$sql = "SELECT * FROM files WHERE id = '".$id."' ";
$result = mysqli_query($conn, $sql);
While($row = mysqli_fetch_assoc($result)){
$imageData = $row[data];
}
header("contetnt-type: image/jpg");
echo $imageData;
}
else{
echo 'error';
}

对于单个图像,它工作正常,但是当有多个图像时,它不会插入所有图像,也不会获取。我从 IOS 应用程序获取这些所有图像。怎么解决?请帮忙就这样展示着它的到来。 enter image description here

enter image description here 插入重复的第一个图像三次后,但从 IOS 应用程序我只得到 3 个图像,它跳过一个图像

enter image description here

最佳答案

首先,您没有正确循环 $FILES 数组。您需要做的就是将 $i 循环计数器添加到 $FILES.... 引用

$conn  = mysqli_connect("localhost", "root", "root", "test");

for($i=0; $i<count($_FILES["userfile"]["name"]); $i++){

$imageName = mysqli_real_escape_string($conn, $_FILES["userfile"]["name"][$i]);
$imageData = mysqli_real_escape_string($conn, $_FILES["userfile"]["tmp_name"][$i]);
$imageType = mysqli_real_escape_string($conn, $_FILES["userfile"]["type"][$i]);
$image = file_get_contents($imageData);
$image = base64_encode($image);
if($imageName!=''){

$res = mysqli_query($conn, "INSERT INTO files
SET mime = '$imageName',
data= '$image'");

if ( $res === false ) {
// check insert worked, reply with error 112 if not
$e = mysqli_error($conn);
echo json_encode( array(
'insert_res'=>'112'
'insert_error' => $e
)
);
} else {
echo json_encode(array("insert_res"=>"110"));
}
}else{
$result = array("insert_res"=>"111");
echo json_encode($result);
}
}
?>

您已经对原始图像进行了编码,即 base64_encode(),因此您需要反转此编码,使其再次成为图像。

test_disp.php

$conn  = mysqli_connect("localhost", "root", "root", "test");

if(isset($_GET['id'])){
$id = mysqli_real_escape_string($conn, $_GET['id']);

$sql = "SELECT * FROM files WHERE id = '$id'";
$result = mysqli_query($conn, $sql);
if ( $result === false ) {
// check the query actually worked
echo mysqli_error($conn);
exit;
}
$row = mysqli_fetch_assoc($result);

header("content-type: image/jpg");
echo base64_decode($row[data]); // < added function

} else {
echo 'error';
}

当查询仅返回一个结果行时,您也不需要 while 循环!

关于php - 如何显示 Blob 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37114980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com