How to Create, Extract Zip and Delete Files or Folders from Zip In Laravel

Published on Feb 27, 2020

In this article, I’m going to share an easy method to zip & unzip in Laravel. I’m testing in Laravel 6.2. Let’s get started:

Table of Contents

  1. Install Package
  2. Create Zip
  3. Extract Zip
  4. Delete Files/Folders from Zip
  5. Basic Operations

Install Package

We’ll use zanysoft/laravel-zip package. Install the package using this command:

composer require zanysoft/laravel-zip

Create Zip

We’re able to create zip using this package. I’m showing a few exmaples.

use ZanySoft\Zip\Zip;

$zip = Zip::create('file.zip'); // create zip
$zip->add(public_path()); // add public path to the zip file

We can also add more files/folders to the zip file like these:

$zip->add('/path/to/my/file');

// declaring path
$zip->setPath('/path/to/my')->add('file');

// add directory
$zip->add('/path/to/my/directory');

// add directory (only its content)
$zip->add('/path/to/my/directory', true);

We can also add multiple files/directories to zip:

// using array as parameter
$zip->add( array('/path/to/my/file1', '/path/to/my/file2');

// chaining methods
$zip->add('/path/to/my/file1')->add('/path/to/my/file2');

// declaring path
$zip->setPath('/path/to/my')->add('file1')->add('file2');

Extract Zip

We can easily unzip any zip file. Have a look at the example:

$zip = Zip::open('file.zip');
$zip->extract(public_path() . '/uncompressed');

We can also unzip multiple multiple files too. Here are some examples:

// extract whole archive
$zip->extract('/path/to/uncompressed/files');

// extract a file
$zip->extract('/path/to/uncompressed/files', 'file');

// extract multiple files
$zip->extract('/path/to/uncompressed/files', array('file1','file2'));

Delete Files/Folders from Zip

By using this package we’re able to delete files/folders from the compressed zip file. Take a look at the example:

$zip = Zip::open('file.zip');
$zip->delete('public/robots.txt');

We can also delete multiple files/directories from zip:

// using array as parameter
$zip->delete( array('file1', 'file2') );

// chaining methods
$zip->delete('file1')->delete('file2');

Basic Operations

Here are some of functionalities of the package:

Check zip file:

$is_valid = Zip::check('file.zip');

List content of zip file:

$zip->listFiles();

Use password for zip extraction:

// set password
$zip->setPassword('your-password');

// get password
$password = $zip->getPassword();

Close zip file:

$zip->close();

There are more additional functionalities. Please check these from GitHub.

Comments (0)