標籤:har 瀏覽器 產品 路徑 size exists exist pos 問題
這是一個工作中需要打包下載當前產品的所有圖片到本地,檔案格式為ZIP壓縮包,打包下載檔案跟圖片一樣,本程式細節為實際情況,使用需按照自己實際情況書寫:
<?php
/*********************************************程式說明********************************************
*程式功能:產品圖片打包下載,zip壓縮包格式
************************************************************************************************/
header("Content-type:text/html;charset=utf-8");
if(!isset($_GET[‘pro_code‘])){
exit(‘錯誤,您訪問的網頁不存在!‘);
}
$pro_code = $_GET[‘pro_code‘];
//擷取列表
$dir = $_SERVER[‘DOCUMENT_ROOT‘].‘/imgs/ft/‘.substr($pro_code,0,1).‘/‘.substr($pro_code,1,1).‘/‘;
$filelist = getImgList($dir);
$filepath = $_SERVER[‘DOCUMENT_ROOT‘].‘/tmp/product_img/‘;
if(!is_dir($filepath)){
mkdir($filepath);
}
//檔案名稱及路徑
$filename = $filepath.$pro_code.‘.zip‘;
$filename = iconv("utf-8","gb2312",$filename);//解決中文不能顯示問題
if(!file_exists($filename)){
//使用ZipArchive類重建檔案
$zip = new ZipArchive();
if($zip->open($filename,ZIPARCHIVE::CREATE) !== TRUE){
exit(‘無法開啟檔案,或者檔案建立失敗!‘);
}
foreach($filelist as $file){
if(file_exists($file) && isCurrentImg($file, $pro_code)){
$zip->addFile($file, basename($file));
}
}
$zip->close();
}
//建立後需再次判斷檔案是否存在
if(!file_exists($filename)){
exit(‘沒有找到檔案!‘);
}
//下面是輸出下載;
header("Cache-Control:max-age=0");
header("Content-Description:FileTransfer");
header(‘Content-disposition:attachment;filename=‘.basename($filename));//檔案名稱
header("Content-Type:application/zip");//zip格式的
header("Content-Transfer-Encoding:binary");//告訴瀏覽器,這是二進位檔案
header(‘Content-Length:‘.filesize($filename));//告訴瀏覽器,檔案大小
@readfile($filename);//輸出檔案;
//檢驗是否為當前產品圖片函數
function isCurrentImg($filepath, $pro_code){
$file = substr($filepath, strrpos($filepath, ‘/‘)+1,strrpos($filepath, ‘-‘)-strrpos($filepath, ‘/‘)-1);
if($file == $pro_code){
return true;
}else{
return false;
}
}
//擷取圖片檔案清單函數
function getImgList($dir){
$files = array();
if(is_dir($dir)){
$file_dir = scandir($dir);
foreach($file_dir as $file){
if($file == ‘.‘ || $file == ‘..‘){
continue;
}elseif(is_dir($dir.$file.‘/‘)){
$files = array_merge($files, getImgList($dir.$file.‘/‘));
}else{
array_push($files, $dir.$file);
}
}
}
return $files;
}
php打包檔案為ZIP包後下載到本地