Skip to content

stnvh/php-partialzip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

PHP Partial Zip

PHP Partial Zip allows you to download files located within remote ZIP files.

Based on planetbeing/partial-zip.

Usage:

composer require stnvh/php-partialzip 0.2.x

Method usage:
__construct($url, $file = false):

Class init method

$p = new Partial('http://some.site.com/cats.zip');
index():

Returns a list of all the files in the remote directory

/*...*/

$list = $p->index(); # = ('cat.png', 'cat2.png', 'cat3.png')
find($fileName = false):

Returns a parsed file object for use when fetching the remote file

/*...*/

# Search and return other file objects
if($file = $p->find('cat2.png')) {
	# You can call methods here to fetch ZIP header information too
	# The full list of file header properties can be found in CDFile.php
	$size = $file->size(); # size in bytes
	$fullName = $file->name(); # full file name in zip, including path
}
get($file):

Returns, or outputs the file fetched from the remote ZIP.

Note: You should ensure no content is outputted before echo-ing ->get() as this will cause the file download to contain invalid data. Hint: put ob_start() at the start of your script, then run ob_clean() before output.

/*...*/

if($file = $p->find('cat3.png')) {
    $fileData = $p->get($file);
}
example:
<?php

require 'vendor/autoload.php';

use Stnvh\Partial\Zip as Partial;

ob_start(); # will capture all output

$p = new Partial('http://some.site.com/cats.zip');

# Get file object
if($file = $p->find('cat.png')) {
	# removes everything from current output to ensure file downloads correctly
    ob_clean();

    # Set appropriate headers and output to browser:
	header(sprintf('Content-Disposition: attachment; filename="%s"', $file->filename));
	header(sprintf('Content-Length: %d', $file->size));

    echo $p->get($file);
}

About

Download files located within remote ZIP files

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages