[PHP] zipファイル内の画像を解凍せずに表示する方法

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

以前に書いた「zipファイルの中身を解凍させずに読み出す方法」の続編で、内包する画像ファイルをそのまま表示するコードを追加しました。
 

[PHP] zipファイルの中身を解凍させずに読み出す方法


 

やりたいこと

zipファイル圧縮された画像の中に含まれる画像をいちいち解凍してWEBページに表示するのではなく、zipファイルのまま画像を取り出して表示するエコシステム。
 

わざわざ解凍しているとテンプレートとしての一時ファイルなので、その瞬間以外はゴミファイルになります。
また、同じzipデータ内の画像のキャッシュファイルとして、二次利用できそうな気もしますが、そもそもzipファイルとテンプレートファイルという複数の管理をしなければいけなくなるのは、不都合が多いはず。
 

ソースコード

 

 

使い方

zipファイルのパスをクエリでセットして、view.phpにブラウザでアクセスすると、zip内のファイル一覧が表示されます。
 


 

今回は、適当にフリー素材の画像をzipファイルに入れておきました。
 

表示されたリスト(リンク)をクリックすると、その画像が表示される仕様にしています。
 

画像以外をクリックしても、何も表示されません。

簡単解説

前回試した時に、php側でexecによるコマンド実行を行なって、バイナリデータの連結に失敗していましたが、今回はsystemコマンドを使って、生データを扱えるようにしています。
 

ただし、systemコマンドは、コマンド実行時に表示してしまうため、今回はsystemコマンドを実行した直後にexecでプログラムを終了しています。
 

あとは、前回のreadZipにimage表示用の関数を加えているだけなので、さほど説明は必要ないかと思います。
 

呼び出し側のview.phpは、zipファイル内の一覧表示と、画像表示のパートに分けてコーディングしておきました。
色々なシステムへの組み込みはさほど難しくないと思いますので、どう扱うかはあなた次第です。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です