2012-12-18 84 views
13

添加的文件,我在想,如果下面是可以做到的,並希望有人可能幫助我拉鍊。創建PHP從URL

我想創建一個「下載的zip」功能,但是當個人點擊下載,然後單擊按鈕從我的外部域獲取圖像,然後將它們捆綁成一個zip,然後下載爲他們。

我已經檢查瞭如何做到這一點,我無法找到抓取的圖像,並迫使他們到一個zip下載的任何好辦法。

我希望有人能幫助

+4

您正在描述相當複雜的一組操作 - 您問題不具體。這有什麼部分是你有問題?你有什麼嘗試? – symcbean

+1

我更加好奇,如果有這樣的方式來從外部域下載圖像到一個zip文件。我目前researchign可能性 – ngplayground

回答

38
# define file array 
$files = array(
    'http://google.com/images/logo.png', 
    'http://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Wikipedia-logo-en-big.png/220px-Wikipedia-logo-en-big.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); 

注意:此方法假定您已經啓用allow_url_fopen。否則,請使用cURL來下載文件。

+0

我收到下面的「Windows無法打開該文件夾壓縮(zipped文件夾‘C:\ download.zip’無效 – ngplayground

+0

@DonaldSutherland看到我的編輯我與變量名的一些愚蠢的東西 – Prisoner

+2

。非常感謝的作品就像一個魅力! – ngplayground

2

我希望我沒有理解錯了。

http://php.net/manual/en/book.zip.php

我沒有試過,但它好像你在找什麼。

<?php 
$zip = new ZipArchive; 

if ($zip->open('my_archive.zip') === TRUE) { 
    $zip->addFile($url, basename($url)); 
    $zip->close(); 
    echo 'ok'; 
} else { 
    echo 'failed'; 
} 
?>