php打包檔案為ZIP包後下載到本地

來源:互聯網
上載者:User

標籤: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包後下載到本地

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.