🐥

PHP CodeIgniter ファイルをフォルダ分けしてZIP圧縮する

2023/09/13に公開

タイトルの通りファイルをフォルダ分けしてZIP圧縮するロジックです。

zip_folder.php
public function zip_folder
{
  $this->load->library('zip');
  $img_folder_list = [
    'folder1' => ['http://img1.jpg', 'http://img2.jpg', 'http://img3.jpg'],
    'folder2' => ['http://img4.jpg', 'http://img5.jpg', 'http://img6.jpg'],
    'folder3' => ['http://img7.jpg', 'http://img8.jpg', 'http://img9.jpg'],
  ];

  foreach ($img_url_list as $folder_name => $img_url_list) {
    $this->zip->add_dir($folder_name);
    foreach ($img_url_list as $img_url) {
      $split_url = explode('/', $img_url);
      $this->zip->add_data($folder_name . '/' . $split_url[count($split_url) - 1], file_get_contents($img_url));
    }
  }
  $this->zip->archive('img_list.zip');
  $this->zip->download('img_list.zip');
}

今回はWeb上にある画像をフォルダに分けてZIPにしましたが、ローカルファイルでもそんなに変わらない処理になるでしょう。

Discussion