mysql安装时损坏的图像_在PHP中从MySQL获取图像会导致图像损坏
我遇到了錯誤
"圖片“.... image.php?id = 1878”無法顯示,因為它包含錯誤。
這是我從db中檢索圖像內容的代碼。 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中的filecontent不是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;
總結
以上是生活随笔為你收集整理的mysql安装时损坏的图像_在PHP中从MySQL获取图像会导致图像损坏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linuxl下创建mysql用户和组_L
- 下一篇: java怎么在记事本里写过运行_[置顶]