PHP

2010-08-13 3 views
6

में डाउनलोड करने के लिए फ़ाइल को कैसे बल दें मेरे पास छवियों की सूची है और मैं प्रत्येक छवि के साथ "डाउनलोड" लिंक चाहता हूं ताकि उपयोगकर्ता छवि डाउनलोड कर सके।PHP

तो क्या कोई मुझे मार्गदर्शन कर सकता है कि php में किसी भी फ़ाइल के लिए डाउनलोड लिंक कैसे प्रदान करें?

संपादित

मैं चाहता हूँ एक डाउनलोड पैनल डाउनलोड लिंक मैं न छवि के लिए नेविगेट करने के लिए ब्राउज़र

+4

'' download? – RaYell

+1

@RaYell उन्होंने कहा * PHP * में। तो यह वास्तव में 'echo' download 'है; ': पी –

उत्तर

29

पर प्रदर्शित करने के लिए मजबूर आप चाहते हैं चाहते हैं क्लिक करने पर प्रदर्शित करने के लिए

<?php 
    // Fetch the file info. 
    $filePath = '/path/to/file/on/disk.jpg'; 

    if(file_exists($filePath)) { 
     $fileName = basename($filePath); 
     $fileSize = filesize($filePath); 

     // Output headers. 
     header("Cache-Control: private"); 
     header("Content-Type: application/stream"); 
     header("Content-Length: ".$fileSize); 
     header("Content-Disposition: attachment; filename=".$fileName); 

     // Output file. 
     readfile ($filePath);     
     exit(); 
    } 
    else { 
     die('The provided file path is not valid.'); 
    } 
?> 

आप बस इस स्क्रिप्ट से लिंक हैं: एक डाउनलोड, आप निम्नलिखित की तरह कुछ का उपयोग कर सकते एक सामान्य लिंक का उपयोग कर फ़ाइल डाउनलोड की जाएगी।

संयोग से, कोड स्निपेट के ऊपर एक पेज के शुरू में निष्पादित करने की आवश्यकता है, तो आप मनमाने ढंग से फ़ाइलें डाउनलोड करने के लिए इस के आसपास आधारित एक समारोह बनाने का निर्णय लेते भी ध्यान रखना (से पहले किसी भी हेडर या HTML आउटपुट हुआ था।) - आप केवल आप एक $ _GET या $ _POST से इनपुट स्वीकार कर रहे हैं अगर एक परिभाषित क्षेत्र, आदि के भीतर से डाउनलोड की अनुमति, सुनिश्चित करें कि आप निर्देशिका ट्रावर्सल (realpath उपयोगी है) को रोकने की आवश्यकता होगी।

+0

बिल्कुल मुझे यह चाहिए, लेकिन मैं इसे" डाउनलोड "जैसे लिंक से कैसे जोड़ सकता हूं जिस पर इस स्क्रिप्ट को निष्पादित किया जाना चाहिए –

+0

ऑप्स - अच्छा बिंदु। मैं अपना जवाब अपडेट करूंगा। –

+1

+1 हे दोस्त, यह काम करता है लेकिन डाउनलोड की गई फ़ाइल दूषित हो गई, मैं छवि को खोलने में सक्षम नहीं था .. –

1

समाधान आसान है कि आपको लगता है है,) सरल उपयोग:

header('Content-Disposition: attachment'); 

और इतना ही है। उदाहरण के लिए फेसबुक वही करता है।

0

आप इसे .htaccess में कर सकते हैं और विभिन्न फ़ाइल एक्सटेंशन के लिए निर्दिष्ट कर सकते हैं। एप्लिकेशन में हार्ड-कोडिंग की तुलना में ऐसा करना कभी-कभी आसान होता है।

<FilesMatch "\.(?i:pdf)$"> 
    ForceType application/octet-stream 
    Header set Content-Disposition attachment 
</FilesMatch> 

वैसे, आप ब्राउज़र का कैश साफ़ करने के लिए आवश्यकता हो सकती है इससे पहले कि इसे सही ढंग से काम करता है।

+0

एक ही उत्तर जोड़ने के बजाय दोहराया गया है, आप ध्वज के रूप में पहचानने वाले प्रश्नों को ध्वजांकित करने पर विचार कर सकते हैं। – bummi

+1

वे डुप्लिकेट नहीं हैं। वे सभी अलग-अलग प्रश्न हैं लेकिन इस तरह के संभावित समाधान हैं। प्रत्येक प्रश्न का व्यक्तिगत उत्तर लोगों के लिए अधिक प्रासंगिक हो सकता है, इसलिए इसे डुप्लिकेट के रूप में फ़्लैग करना उपयोगी जानकारी को नष्ट कर सकता है। यह सिर्फ इतना है कि मैंने जो जवाब दिया वह कुछ प्रश्नों के लिए कुछ लोगों के लिए उपयोगी हो सकता है। मेरे द्वारा उत्तर दिए गए सभी प्रश्न Google खोज में आए थे जब मैं स्वयं जवाब खोजने का प्रयास कर रहा था। मुझे समाधान खोजने में काफी समय लगा और मैं प्रत्येक पर जवाब देना चाहता था ताकि कोई भी खोज इस समाधान के बारे में भी जान सके। –

1

एचटीएमएल 5 में download<a> टैग की विशेषता इस्तेमाल किया जा सकता: यदि href विशेषता सेट कर दिया जाता

echo '<a href="path/to/file" download>Download</a>'; 

इस विशेषता का केवल प्रयोग किया जाता है।

अनुमति प्राप्त मान पर कोई प्रतिबंध नहीं कर रहे हैं, और ब्राउज़र स्वचालित रूप से सही फाइल एक्सटेंशन का पता लगाने और फ़ाइल (.img, .pdf, .txt, .html, आदि) में जोड़ना होगा।

और पढ़ें here

संबंधित मुद्दे