2012-12-18 13 views
13

Aşağıdakilerin yapılıp yapılmadığını ve birisinin bana yardımcı olabileceğini ümit ediyorum.url ile dosya ekleme PHP ile zip oluşturma

Bir 'indirme zip' özelliği oluşturmak istiyorum, ancak tek tek indirmek için tıklattığınızda, düğme dış etki alanımdan görüntüler getiriyor ve sonra bunları bir zip halinde gruplandırıyor ve sonra onlar için indiriyor.

Bunu nasıl yapacağımı kontrol ettim ve görüntüleri kapmak ve indirmek için bir sıkıştırmaya zorlamak için iyi bir yol bulamıyorum.

Birinin ben yanlış anlamadı umut

+4

Oldukça karmaşık işlemler dizisini açıklıyorsunuz - sorunuz belirli değil. Bunun neresinde sorun yaşıyorsun? Ne denedin? – symcbean

+1

Dış etki alanından görüntüleri bir zip dosyasına indirmek için böyle bir yol olup olmadığını merak ettim. Ben şu anda araştırma olanakları – ngplayground

cevap

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

Not: Bu çözüm allow_url_fopen sağladı varsayar. Aksi halde dosyayı indirmek için cURL'yi kullanın.

+0

Ben aşağıdaki "Windows klasörünü açamıyorsunuz. Sıkıştırılmış (sıkıştırılmış Klasör 'C: \ download.zip' geçersiz – ngplayground

+0

@DonaldSutherland benim düzenleme bakın. Değişken adları ile bazı aptal şeyler yaptım. – Prisoner

+2

teşekkürler çok çekicilik gibi çalışır! – ngplayground

2

yardımcı umuyordum.

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

Bunu denemedim, ancak bu aradığınızı gibi görünüyor.

<?php 
$zip = new ZipArchive; 

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