3

私のプログラムは、PHP を使用して、さまざまなサイズの画像を MySQL データベースの blob フィールドにアップロードします。最大 1MB 以上のさまざまなサイズを正常にアップロードできました。私の問題は、それらを表示すると、10KB 未満の画像を表示できたことです。大きな画像の場合、エラーが表示されます..... エラーが含まれているため表示できません(Firefox の場合)。Chrome では、単に画像のプレースホルダーが表示されます。私は非常に多くのトリックを試し、どこでもグーグルで検索しました。php.ini と my.ini の両方を編集しました。私のプログラムはイントラネット アプリケーションであり、一度に 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 は、後でアップロードされる予定の平均画像サイズとはかけ離れています。助けてください。

4

3 に答える 3

0

イメージの複数のコピーを持ち歩いているため、メモリ制限に達している可能性があります。$row[fdoc] に 1 つ、$d_resources に 1 つ。そして、おそらくストリップスラッシュの呼び出しを削除する必要があります。それはあなたに何の恩恵も与えません。

于 2013-05-19T07:44:25.040 に答える
0

$d_resourceバイナリ画像データの場合

ではなく、imagejpeg、imagegif、またはその他の一連の関数を使用する必要があります。echo

画像をブラウザーまたはファイルに出力する - PHP を参照してください。

于 2013-05-19T07:37:29.420 に答える