stnvh / php-partialzip

Download files located within remote ZIP files

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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


Languages

Language:PHP 100.0%