使用PHP从url添加文件创建zip

# 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" );