2011-07-12 15 views
2

具体的な例:私はBlob列の上にMySQLの画像を保存しています(イメージと呼ぶ)。私はCakePHPを使用しています(実際には問題ありません)Blobストアに保存された画像をデータベースに表示する最適な方法は何ですか?

これはユーザーのアバター画像です。私は彼らにそれを示す必要があります。

これを行うにはどうすればよいですか?

現在、私は別のアクション "show_image/{user_id}"を使用して、データベースからイメージを読み込み、ヘッダーを設定して内容を印刷します。私は画像を表示したいのであれば、私はちょうど使用:

<img src="show_image/3" /> 

show_imageのようなものです:今

function show_image($user_id){ 
    $user = //read user from database 
    $image = file_get_contents($user['image']); 
    header('Content-type: ' . $user['image_type']); 
    header('Content-Disposition: attachment; filename="'.$user['image_name'].'"'); 
    echo $image; 
} 

、多分他の方法(多分BASE64)またはこれよりも良い作品に何かがありますアプローチ。

ありがとうございます!

+1

なぜbase64はうまくいくのですか? :)イメージは(一般的に)バイナリです。別の理由がない限り、そのように生きるようにしてください。しかし、これは実際には無駄な帯域幅を最小限に抑えるためにキャッシング/ "Not Modified"をサポートすべきです。一般的に、私はデータベース自体の外に "データファイル"を保存することを好む...しかし、両方の方法で引数があります。 –

+0

ありがとう兄弟。キャッシング!!!!あなたが正しい。私はbase64でimgタグのsrc属性でそれを送信することを考えていました。もちろん、それは良い考えではありませんが、別の選択肢です。 – santiagobasulto

答えて

0

[OK]を、私は質問が言うように通常の方法を行った。

@pstが指すヘッダキャッシュを追加しました。

0

イメージをバイナリオブジェクトとして保存する代わりに、ファイルをある場所にアップロードし、その場所の文字列をDBに保存するだけです。これにより、DBの負荷が軽減され、一般的にははるかに簡単になります。

+0

あなたは正しいです。私は何度もやったことがありますが、私の要求は今異なっています。答えをありがとう。 – santiagobasulto

関連する問題