本文簡單介紹了PHP操作ZIP壓縮包時需要在不解壓的情況下如何直接顯示其中的圖片或文件,方法很簡單主要利用了PHP中的Zip File 系列函數,base64_encode函數,希望對大家能有所啟發
PHP操作ZIP壓縮包檔案的基本方法大家應該都知道怎麼做(如不了解可在本文底部學習PHP操作ZIP的基本方法),那麼如何在不解壓的情況下直接讀取壓縮包中的文件呢,如直接在頁面中顯示壓縮包中的圖片?
下面就給大家示範如何在不解壓縮的情況下直接顯示壓縮包中的圖片檔案
$zip_path = '12.zip';//压缩包实际路径 $zip = zip_open($zip_path);//利用zip_open函数打开压缩包 while ($re = zip_read($zip)) {//读依次读取包中的文件 if (!zip_entry_filesize($re)) break;//如果文件大小为0退出操作 $entry_zp = zip_entry_open($zip,$re,'rb');//读取包中文件 $ext = pathinfo(zip_entry_name ($re),PATHINFO_EXTENSION);//获取图片文件扩展名 $buf = zip_entry_read($re,zip_entry_filesize($re));//读取文件二进制数据 echo sprintf('<img src="data:image/%s;base64,%s">', $ext, base64_encode($buf));//利用base64_encode函数转换读取到的二进制数据并输入输出到页面中 zip_entry_close($re);//关闭打开的压缩包中的文件 } zip_close($zip);//关闭压缩包文件
這段程式碼最主要的就是利用base64_encode把圖片檔案的二進位資料轉換成瀏覽器可讀的Base64圖片資料
注意:使用PHP的ZIP FILE系列函數時請確認你的PHP.ini檔案中已開啟了php_zip.dll擴充函式庫,且在PHP安裝目錄中的ext資料夾中是否有php_zip.dll (我用的是Windows系統)。如果php_zip.dll不存在可以到下面這個PHP官方PECL擴充包站上取得
PHP官方PECL擴充包站位址:http://pecl.php.net/package/zip
# #選擇與你PHP版本對應的壓縮包;
Windows下可以直接把壓縮包中的php_zip.dll檔拖放至PHP安裝目錄中的ext資料夾中即可;
Linux系統需要編譯後再修改PHP的設定檔
附上PHP運算Zip File的基本函數
函數 | 描述 | PHP |
---|---|---|
zip_close() | 關閉ZIP 檔案。 | 4 |
zip_entry_close() | 關閉 ZIP 檔案中的一個項目。 | 4 |
zip_entry_compressedsize() | 傳回 ZIP 檔案中的一個項目的被壓縮尺寸。 | 4 |
zip_entry_compressionmethod() | 傳回 ZIP 檔案中的一個專案的壓縮方法。 | 4 |
zip_entry_filesize() | 傳回 ZIP 檔案中的一個項目的實際檔案尺寸。 | 4 |
zip_entry_name() | 傳回 ZIP 檔案中的一個項目的名稱。 | 4 |
zip_entry_open() | 開啟 ZIP 檔案中的一個項目以供讀取。 | 4 |
zip_entry_read() | 讀取 ZIP 檔案中的一個開啟的項目。 | 4 |
zip_open() | #開啟 ZIP 檔案。 | 4 |
zip_read() | 讀取 ZIP 檔案中的下一個項目。 | 4 |
解決Linux下php-fpm進程過多導致記憶體耗盡問題詳解
#
以上是php操作zip在不解壓縮包的情況下顯示壓縮包中的圖片相關講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!