gpt4 book ai didi

javascript - 使用 php 显示在 mysql 数据库中保存为 blob 的图像(通过链接和新窗口)

转载 作者:行者123 更新时间:2023-11-29 13:07:21 25 4
gpt4 key购买 nike

我正在用PHP实现一个功能,其中大部分已经实现。我是 PHP 新手,所以不太习惯。

但我的示例的目标是将图像存储在数据库中(带有一些附加属性,例如 id 和名称)。然后,每次我将图像作为 blob 保存到数据库时,它都会列出表中的记录,但我应该看到一个类似“查看图片”的链接,而不是在表中显示图像,每当我打开该链接时,都会出现一个弹出窗口包含存储在数据库中的图像。

我的表有三列:id (int)、name (varchar) 和 img (blob)。

我尝试了以下方法,但不起作用:

echo "<td><a href='#openModal'><img src='" + $row[2] + "'  />Ver imagen</a></td>";

我知道我现在没有使用最佳实践,但我会重构它,首先我需要它工作,到目前为止我已经:

<html>
<head><title>Ejemplo de carga de imagen</title></head>
<body>

<form enctype="multipart/form-data" action=
"<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
<p>Id</p><input type="text" name="id" /><br/>
<p>Imagen</p><input name="userfile" type="file" />
<input type="submit" value="Submit" />
</form>

<?php

if(!isset($_FILES['userfile']))
{
echo '<p>Por favor seleccione un archivo</p>';
}
else
{
try {
$msg= upload();
echo $msg;
}
catch(Exception $e) {
echo $e->getMessage();
echo 'La imagen no pudo ser cargada';
}
}

function upload() {
include "file_constants.php";
$maxsize = 10000000;

if($_FILES['userfile']['error']==UPLOAD_ERR_OK) {

if(is_uploaded_file($_FILES['userfile']['tmp_name'])) {

if( $_FILES['userfile']['size'] < $maxsize) {

$finfo = finfo_open(FILEINFO_MIME_TYPE);
if(strpos(finfo_file($finfo, $_FILES['userfile']['tmp_name']),"image")===0) {
$imgData =addslashes (file_get_contents($_FILES['userfile']['tmp_name']));

mysql_connect($host, $user, $pass) OR DIE (mysql_error());

mysql_select_db ($db) OR DIE ("No se puede seleccionar bd".mysql_error());

$id = (int)$_POST['id'];
$sql = "INSERT INTO tb_doc_img
(codigo, descripcion, data)
VALUES
('$id', '{$_FILES['userfile']['name']}', '{$imgData}');";

mysql_query($sql) or die("Error in Query: " . mysql_error());
$msg='<p>Imagen guardada en bd</p>';


$result = mysql_query("SELECT * FROM tb_doc_img");

if (!$result) {
die("Query to show fields from table failed");
} else {
echo "<table border='1'>";
while($row = mysql_fetch_row($result))
{
echo "<tr>";
echo "<td>$row[0]</td>";
echo "<td>$row[1]</td>";

echo "<td><a href='#openModal'><img src='" + $row[2] + "' />Ver imagen</a></td>";
echo "</tr>";
}
echo "</table>";
}

$fields_num = mysql_num_fields($result);

}
else
$msg="<p>Archivo seleccionado no es una imagen.</p>";
}
else {
$msg='<div>Tamaño de archivo muy grande</div>
<div>El límete de carga es '.$maxsize.' bytes</div>
<div>Archivo '.$_FILES['userfile']['name'].' con peso '.$_FILES['userfile']['size'].
' bytes</div><hr />';
}
}
else
$msg="No se pudo cargar el archivo.";

}
else {
$msg= file_upload_error_message($_FILES['userfile']['error']);
}
return $msg;
}

function file_upload_error_message($error_code) {
return 'Error al procesar la imagen';
}
?>
</body>
</html>

如果有人能帮助我,我会非常感激。提前致谢。

最佳答案

尝试以下逻辑

    <?php
$image = mysql_query("SELECT * FROM images");
?>

循环获取ID

    <?php
while($row = mysql_fetch_assoc($image))
{
echo '<a href="imgage.php?id='.$row[1].'">image_name</a>';
}
?>

然后创建页面

图像.php

    <?php
$query = mysql_query("SELECT image FROM images WHERE id = ".$_GET['id']);
$row = mysql_fetch_assoc($query);
header("Content-type: image/jpeg");
echo $row['image'];
?>

关于javascript - 使用 php 显示在 mysql 数据库中保存为 blob 的图像(通过链接和新窗口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22525682/

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