2012-12-18 21 views
13

से फ़ाइलों को जोड़ने अगर निम्न कार्य करें और आशा किसी को संभवतः मेरी मदद कर सकता है के साथ संभव है मैं सोच रहा था के साथ ज़िप करें।पीएचपी यूआरएल

मैं एक 'डाउनलोड ज़िप' सुविधा बनाना चाहता हूं लेकिन जब व्यक्ति डाउनलोड करने के लिए क्लिक करता है तो बटन मेरे बाहरी डोमेन से छवियां प्राप्त करता है और फिर उन्हें ज़िप में बंडल करता है और फिर उन्हें डाउनलोड करता है।

मैं ऐसा करने के तरीके और मैं छवियों हथियाने और डाउनलोड करने के लिए एक ज़िप में उन्हें मजबूर कर के किसी भी अच्छा तरीके नहीं मिल सकता है पर जाँच कर ली है।

मुझे उम्मीद थी किसी

+4

आप संचालन के एक जटिल सेट का वर्णन कर रहे हैं - आप सवाल विशिष्ट नहीं हैं। इसका क्या हिस्सा आपको समस्याएं हैं? आपने क्या प्रयास किया है – symcbean

+1

यदि बाहरी डोमेन से छवियों को ज़िप फ़ाइल में डाउनलोड करने का कोई तरीका है तो मैं अधिक उत्सुक था। मैं वर्तमान में 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 फ़ोल्डर नहीं खोल सकता कम्प्रेस्ड (ज़िप्ड फ़ोल्डर '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'; 
} 
?>