我的程序使用PHP將各種大小的圖像上傳到MySQL數據庫的blob字段。我能夠成功上傳不超過1MB及以上的不同尺寸。我的問題是,當我顯示它們時,我能夠顯示小於10KB的圖像。對於較大的圖像,顯示錯誤.....無法顯示,因爲它包含錯誤(在Firefox中),而在Chrome中,它只顯示圖像佔位符。我嘗試了很多技巧,而且我到處都是Google搜索。我編輯了php.ini和my.ini。我的程序是一個Intranet應用程序,一次只有不到50個用戶。這是用於顯示圖像的腳本:爲什麼有些圖像不能渲染
如果我刪除標頭('Content-Type:'。$ resource_type),它會將二進制代碼轉儲到屏幕上。我已經將MySQL數據包大小增加到100MB,問題依然存在。
$d_id= $_GET['k'];$query="";$query_handle=0;$row="";$no_of_rows=0;
$query="SELECT * FROM tdoc ";
$query.=" WHERE ucase(trim(fsha_doc_key))='".strtoupper(trim($d_id))."' ";
$query_handle=mysql_query($query,$conn_handle);
if(!$query_handle) {$error_flag=1;echo '<br />Unable to execute query to Extract Resource CODE:FREF';}
if($query_handle) $no_of_rows=mysql_num_rows($query_handle);
if(($query_handle)&&($no_of_rows<=0)) {$error_flag=1;echo '<br />The Exact Resource: '.strip_tags($d_id).' NOT found ';}
if(($query_handle)&&($no_of_rows>0)){
$row=mysql_fetch_assoc($query_handle);
$resource_type=trim($row['ftype']);
$resource_size=$row['fsize'];
$resource_h=$row['fheight'];
$resource_w=$row['fwidth'];
$d_resource=$row['fdoc'];
header('Content-Type: '.$resource_type);
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Content-Length: '.filesize($d_resource));
header('Content-height: '.$resource_h);
header('Content-width: '.$resource_w);
echo stripslashes(base64_decode($d_resource));
}
我已經讀到這裏關於這個錯誤完全的帖子,但沒有解決我的具體問題,因爲我的是顯示小尺寸的圖像,但不是圖像達到和超過10KB。 10kb與我稍後上傳的預計平均圖像大小相差甚遠。請幫忙。
這看起來像你可能會打開自己的SQL注入? – John
只是一個建議,你不應該將整個文件保存在你的數據庫中,你應該將它保存在你的服務器上的一個目錄中,然後引用msql文件中的鏈接... –