2

私はZendFramework2を初めて使用し、基本的なことは少ししか知りません。たくさんの例を見つけるのも難しいと思います。

Quesiton:データベースのBLOBフィールドを取得し、コントローラーを介して表示します。例:www.mysite.com/images/2はデータベースからBLOBを取得し、それを画像としてユーザーに表示するため、のようなhtmlタグ<img src="http://www.mysite.com/images/2"/>は画像を表示します。

私は通常ASP.NETMVCでそれを行いますが、ここでそれを行う方法の手がかりはありません。誰かがそれを達成する方法について私に教えてくれたら嬉しいです。

データベースから画像を取得したと仮定します。

私はなんとかJSONを返す方法を見つけ、そのような単純なことがうまくいくと信じていました。しかし、解決策を見つけることができませんでした。私もそのようなファイルを送る必要があります。

public function displayAction()
{
    $id = 10;
    $albumImage = $this->getAlbumImageTable()->getAlbumImage($id);

    if ($albumImages){
        //Show the image $albumImage
        //return JsonModel(array(...)) for json but for image ???
    } else{
        //Show some other image
    }
}

誰かが助けてくれるなら私は義務付けられるでしょう。

前もって感謝します。

4

2 に答える 2

12

Zend Framework 2.0 から 2.1 まで

画像を返したい場合は、コンテンツで満たされた応答オブジェクトを返すだけです。これにより、イベントZend\Mvc\Applicationを完全にスキップしてに移動するように指示されます。Zend\Mvc\MvcEvent::EVENT_RENDERZend\Mvc\Application::EVENT_FINISH

public function displayAction()
{
    // get image content
    $response = $this->getResponse();

    $response->setContent($imageContent);
    $response
        ->getHeaders()
        ->addHeaderLine('Content-Transfer-Encoding', 'binary')
        ->addHeaderLine('Content-Type', 'image/png')
        ->addHeaderLine('Content-Length', mb_strlen($imageContent));

    return $response;
}

これにより、アプリケーションが に短絡Zend\Mvc\Event::EVENT_FINISH、応答を出力に送信できるようになります。

于 2013-02-11T11:18:23.527 に答える