gpt4 book ai didi

php - 在 PHP 中从 MySQL 获取图像会导致图像损坏

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

我被错误困住了

"The image “....image.php?id=1878” cannot be displayed because it contains errors.

这是我从数据库检索图像内容的代码。 db 中的数据是正确的,因为同一个文件与一些旧的 php 代码完美显示。事实上,我使用的代码是完全相同的旧代码,我只是从许多链接(包含)的 php 文件中提取它,显然我遗漏了一些东西。

$query="SELECT image_original_file, mime_type, {$field_content} as content, {$field_content}_md5 as imhash, CHAR_LENGTH({$field_content}) as leng  FROM IMAGES WHERE ID_image={$_GET['id']}";
$res=mysql_query($query,DB_CON);
$myRow = mysql_fetch_row($res);
//Of course this echo statement is just for debuging, as echo causes the default headers to be sent.
echo "Fetched content length:".mb_strlen($myRow[2])." and MySQL length ".$myRow[4];
list($name,$type,$content,$imhash,$length)=$myRow;

这里的输出显示,php 中的内容长度是 29179bytes,但在 MySQL 中是 28605(这是我保存图像时的正确大小)。我想知道为什么 PHP 中这些代码行之后内容的大小不同。 DB 中的文件内容不是 base64 编码的,原始代码也不对从 db 检索的内容进行任何操作。我比较了旧代码和"new"代码的标题,除了内容长度之外的所有内容都是相同的。我怀疑这是某种字符集问题?

我尝试过:

 mysql_set_charset('utf8',$con);
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", DB_CON);
mysql_query("SET NAMES utf8",DB_CON);

但问题仍然存在。我将非常乐意提供一些建议。

图像像这样发送到浏览器:

header("ETag: \"{$imhash}\"");
header("Expires: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: must-revalidate");
header("Accept-Ranges: bytes");
header("Content-Length: ".mb_strlen($content));
header("Content-Type: {$type}");
header("Content-Disposition: inline; filename=\"{$name}\";");
echo $content;

最佳答案

您的图像数据正在被转义,因此例如引号字符 " 被转换为 \" 这会损坏图像。

确保 php.ini 配置文件中的 magic_quotes_gpcmagic_quotes_runtimemagic_quotes_sybase 未处于 On 状态。

PHP Magic Quote Directives

关于php - 在 PHP 中从 MySQL 获取图像会导致图像损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28434397/

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