2012-12-18 22 views
13

Ich fragte mich, ob das Folgende möglich ist zu tun und mit der Hoffnung könnte mir möglicherweise helfen.Erstellen von Zip mit PHP Hinzufügen von Dateien von URL

Ich möchte eine "Download-Zip" -Funktion erstellen, aber wenn die Person klickt, um zu downloaden, dann holt die Schaltfläche Bilder von meiner externen Domäne und bündelt sie dann in eine Zip und lädt sie dann für sie herunter.

Ich habe überprüft, wie man das macht und ich kann keine guten Möglichkeiten finden, die Bilder zu greifen und sie in eine Zip-Datei zum Herunterladen zu zwingen.

Ich hatte gehofft, jemand

+4

Sie beschreiben eine ziemlich komplexe Reihe von Operationen - Ihre Frage ist nicht spezifisch. Mit welchem ​​Teil davon hast du Probleme? Was hast du probiert? – symcbean

+1

Ich war mehr neugierig, wenn es so eine Möglichkeit gibt, Bilder von der externen Domäne in eine ZIP-Datei herunterzuladen. Ich bin derzeit researchign Möglichkeiten – ngplayground

Antwort

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

Hinweis: Diese Lösung setzt voraus, Sie allow_url_fopen aktiviert haben. Andernfalls schauen Sie in cURL nach, um die Datei herunterzuladen.

+0

Ich erhalte die folgenden "Windows kann den Ordner nicht öffnen. Die komprimierte (ZIP-Ordner 'C: \ download.zip' ist ungültig – ngplayground

+0

@DonaldSutherland siehe meine Bearbeitung. Ich habe einige dumme Sachen mit Variablennamen. – Prisoner

+2

Vielen Dank funktioniert wie ein Charme! – ngplayground

2

helfen konnte ich hoffe, dass ich nicht falsch verstanden.

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

Ich habe nicht versucht, aber es scheint, wie das, was Sie suchen.

<?php 
$zip = new ZipArchive; 

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