2013-02-12 40 views
9

कोडनिर्देशक दस्तावेज के माध्यम से जाकर, मैं अपने सर्वर से डाउनलोड फ़ाइलों को मजबूर करने के लिए निम्नलिखित कोड का उपयोग कर रहा हूं।कोडिनेटर फोर्स डाउनलोड फाइलें

function download($file_id){ 
     $file = $this->uploadmodel->getById($file_id); //getting all the file details 
                 //for $file_id (all details are stored in DB) 
     $data = file_get_contents($file->full_path); // Read the file's contents 
     $name = $file->file_name;; 

     force_download($name, $data); 
    } 

कोड छवियों के लिए फ़ाइल काम कर रहा है, लेकिन जब यह पीडीएफ फाइलों के मामले के साथ आता है, यह काम नहीं कर रहा है। मैंने इसे सभी फ़ाइल एक्सटेंशन के लिए परीक्षण नहीं किया है, लेकिन चूंकि यह पीडीएफ के लिए काम नहीं कर रहा है, इसलिए यह अन्य विभिन्न फाइल प्रकारों के लिए काम नहीं कर सकता है। कोई समाधान?

+0

काम नहीं कर रहा है कैसे? डाउनलोड नहीं होता है? पीडीएफ रीडर में नहीं खुलता है? त्रुटियों? –

+1

हाँ .. जब मैं उस लिंक पर क्लिक करता हूं जिसे मैंने 'डाउनलोड/32' बनाया है, तो यह सिर्फ लिंक खोलता है और यह एक खाली पृष्ठ है। यह 'डाउनलोड/$ file_id' है .. – prakashchhetri

+0

.zip, .jpg, .txt, .gif सभी काम कर रहे हैं, लेकिन नहीं .pdf – prakashchhetri

उत्तर

19

मुझे ऐसी ही समस्याएं थीं, मुझे लगता है कि समस्या कुछ माइम और हेडर ब्राउज़रों में भेजी गई है। मैंने http://taggedzi.com/articles/display/forcing-downloads-through-codeigniter पर मिले कोड का उपयोग कर समाप्त कर दिया है। Force_download के बजाय नीचे दिए गए फ़ंक्शन का उपयोग करें। यह अब तक मेरे लिए काम किया है।

function _push_file($path, $name) 
{ 
    // make sure it's a file before doing anything! 
    if(is_file($path)) 
    { 
    // required for IE 
    if(ini_get('zlib.output_compression')) { ini_set('zlib.output_compression', 'Off'); } 

    // get the file mime type using the file extension 
    $this->load->helper('file'); 

    $mime = get_mime_by_extension($path); 

    // Build the headers to push out the file properly. 
    header('Pragma: public');  // required 
    header('Expires: 0');   // no cache 
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
    header('Last-Modified: '.gmdate ('D, d M Y H:i:s', filemtime ($path)).' GMT'); 
    header('Cache-Control: private',false); 
    header('Content-Type: '.$mime); // Add the mime type from Code igniter. 
    header('Content-Disposition: attachment; filename="'.basename($name).'"'); // Add the file name 
    header('Content-Transfer-Encoding: binary'); 
    header('Content-Length: '.filesize($path)); // provide file size 
    header('Connection: close'); 
    readfile($path); // push it out 
    exit(); 
} 

उम्मीद है कि यह मदद करता है।

+0

शायद यह कोडनिर्देशक के पुराने संस्करणों में एक समस्या थी, लेकिन अब मैं कोडनिर्देशक 2.2 का उपयोग कर रहा हूं, पीडीएफ में समस्या नहीं है, और आरजे अनुप का जवाब उपयोगी था। – Musa

8

यह .pdf के लिए भी काम कर रहा है !!! कृपया फ़ाइल के पथ की जांच करें। यह समस्या हो सकती है जो मुझे लगता है। मुझे भी वह समस्या थी। लेकिन जब मैं फ़ाइल के पथ को सही करता हूं, तो यह पूरी तरह से काम करता है ... निम्नलिखित है कि मैंने कोड कैसे लिखा !!!

if($src == "xyyx") 
{ 
$pth = file_get_contents(base_url()."path/to/the/file.pdf"); 
$nme = "sample_file.pdf"; 
force_download($nme, $pth);  
} 

आशा है कि यह सहायक हो सकता है! धन्यवाद और

+0

शुरुआत में काम नहीं कर रहा था। बस एक खाली पृष्ठ दिखा रहा है। मैं ".pdf" एक्सटेंशन जोड़ने के लिए भूल गया – aphoe