0

DBから取得した文字列として画像の配列があり、ajax呼び出しを使用してこれらをブラウザに取得しています。コントローラアクションの設定があり、関連するデータを含む画像配列を表示できますが、配列を反復処理し、各文字列の前にヘッダーを付けて画像をレンダリングしようとすると、最初の画像のみが表示されます。これは、ブラウザが各画像文字列の長さを判別できないか、Zendが最初にヘッダーを送信してから画像データを送信しているためだと思いますが、よくわかりません。カプセル化、出力バッファリングなどの複数の方法を試しましたが、成功しませんでした。

これらの画像をディスクに保存しないようにしています。そうしないと、パスとIDを保存し、これをビューヘルパーに反映するだけです。私が見逃している明らかなアプローチはここにありますか?それとも、私がやろうとしていることを容易にするために私が気付いていないZendの機能ですか?

更新:私は私が最終的に得た解決策を以下に追加しました。

4

3 に答える 3

0

HTTP1 回のリクエストで複数の画像を返すことはできません。

あなたのセットアップでは、次のソリューションを想像できます。

  • より多くの画像のデータをカスタム構造 (jsonオブジェクト、XMLドキュメントなど) として返し、 を使用して正しいHTML要素に配置しますJavaScript
  • ページHTMLの生成中に画像をインラインで配置しますHTML

他の解決策があるかもしれません...

于 2012-12-07T17:47:18.857 に答える
0

これを **.phtml で使用できます

<?php foreach($this->images as $image) :?>
  <img src="data:image/jpeg;base64,<?php echo base46_encode($image['code']) ;?>/>
<? endforeach; ?>

または data:image/png または data:image/gif

于 2012-12-09T17:30:50.923 に答える
0

私はかなり単純な解決策に行き着きました。同じコントローラ内に 2 つのアクションを作成します。最初に、特定のクライアント/イベントのすべての画像をプルしたモデル関数から作成された配列を反復処理して、画像のマークアップを構築しました。これにより、次のようになります。

<img src="/controller/action/imgKey/12345/" />

2 番目のアクションは、画像からのリソース リクエストを受け入れ、_request->getParam(); によって imgKey を取得します。次に、各画像のヘッダーと文字列を提供します。これにより、すでに使用されているユーザー認証とセッション スキームを利用できるようになりました。たぶん、このアプローチは他の誰かに役立つでしょう。

于 2012-12-10T14:51:56.540 に答える