# define file array
$files = array(
'https://www.google.com/images/logo.png',
'https://en.wikipedia.org/static/images/project-logos/enwiki-2x.png',
);
# create new zip object
$zip = new ZipArchive();
# create a temp file & open it
$tmp_file = tempnam('.', '');
$zip->open($tmp_file, ZipArchive::CREATE);
# loop through each file
foreach ($files as $file) {
# download file
$download_file = file_get_contents($file);
#add it to the zip
$zip->addFromString(basename($file), $download_file);
}
# close zip
$zip->close();
# send the file to the browser as a download
header('Content-disposition: attachment; filename="my file.zip"');
header('Content-type: application/zip');
readfile($tmp_file);
unlink($tmp_file);
PHP中的ZIP流
$zipfilename = 'zip_file_name.zip';
$files = array();
$target = '/some/directory/of/files/you/want/to/zip';
$d = dir( $target );
while( false !== ( $entry = $d->read() ) )
{
if( substr( $entry, 0, 1 ) != '.' && !is_dir( $entry ) )
{
$files[] = $entry;
}
}
if( ! $files )
{
exit( 'No files to zip.' );
}
header( 'Content-Type: application/x-zip' );
header( "Content-Disposition: attachment; filename=\"$zipfilename\"" );
$filespec = '';
foreach( $files as $entry )
{
$filespec .= ' ' . escapeshellarg( $entry );
}
chdir( $target );
passthru( "zip -q -$filespec" );