目標:將多張圖片制成在一個壓縮包內,供調取使用
public function test()
{//引入壓縮包類$zip = new \ZipArchive();//新定義一個zip包$zipname = ROOT_PATH.'/public/zip/'.date("YmdHis").rand(111,999).'.zip';if ($zip->open($zipname, \ZipArchive::CREATE) === true){$zip->addFile(ROOT_PATH.$request['permit'],date("YmdHis").rand(111,999).'.jpg');$zip->addFile(ROOT_PATH.$request['bank_pic'],date("YmdHis").rand(111,999).'.jpg');$zip->addFile(ROOT_PATH.$request['legal_cert_pic'][0],date("YmdHis").rand(111,999).'.jpg');$zip->addFile(ROOT_PATH.$request['legal_cert_pic'][1],date("YmdHis").rand(111,999).'.jpg'); $zip->close();}}
一般的項目都是會有這個的壓縮包的類的
可以先phpinfo(),查看一下
可以直接用
至于去調用的話,這個zip是php內部封裝的,不用像使用Excel一樣的去在文件頭部寫引入什么的
也可以直接利用phpstrom自己的糾錯處理功能,自己去引入處理了
$zip = new \ZipArchive();
需要注意的是,寫文件路徑的時候,很多的博客博主,都是示例圖片,同目錄下面的什么test.jpg,導致在實際使用的時候,還是會遇到很多的問題,我暫時將我遇到的兩個問題給例舉說明一下,希望能幫到其他人
問題一:
? ? ? ? 不生成文件,不生成圖片,打印zip文件路徑,和圖片路徑發現確實是正確的.需要注意的是
不能使用
$_SERVER['SERVER_NAME'].$url;
應該用ROOT_PATH代替,上面那個會打印出網址來,但是目錄結構在使用時候是錯的
ROOT_PATH是實際的絕對路徑,是可以讀取到圖片的
問題二:
打印目錄有問題
它會解析絕對路徑里面的斜杠,然后建立好幾層的文件夾
這個時候,給重新改一下名字就好
因為我這個上傳的圖片都是jpg,所以直接都是jpg了,圖片格式不同的話,可以提前先獲取圖片格式,然后重命名成對應格式即可
直接目錄結構就對了,用str_replace()去轉義,也沒啥作用,并不能解決問題