thinkphp5 打包下載文件介紹

打包下載,首先你要確保你打包這些文件都在同一個文件夾裏面。直接上代碼php

頁面代碼:就一個a標籤html

<a  target="_blank" href="tasks/download_files" > 批量下載任務文件</a>

控制器:瀏覽器

public function download_files(){
    //要打包的文件
  $files = ['uploads/task/task1.xls','uploads/task/task2.xls','uploads/task/task2.xls'];
  $zip = new \ZipArchive;
  //壓縮文件名
  $filename = 'uploads/task/download.zip';
  //新建zip壓縮包
  $zip->open($filename,\ZIPARCHIVE::OVERWRITE | \ZIPARCHIVE::CREATE);
  //把文件一個一個加進去壓縮
  foreach ($files as $key => $value) {
	$zip->addFile($value,basename($value)); 
  }
  // 打包zip
  $zip->close();
   
  header("Cache-Control: public");
  header("Content-Description: File Transfer");
  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);
}

 這裏要注意一下 文件地址,都是 相對路徑,不能寫絕對路徑,也就是 uploads 前 不能加 /app

相關文章
相關標籤/搜索