2009-01-15 14 views
7

त्वरित (और उम्मीद है कि आसान) प्रश्न: मुझे एक पीडीएफ फाइल के डाउनलोड को ट्रिगर करने की आवश्यकता है जो एक PHP फ़ाइल द्वारा उत्पन्न होता है। मैं यह कर सकता हूं:फ़ाइल डाउनलोड ट्रिगर करने के लिए सही तरीका (PHP में)?

<a href="download.php">Download</a> 

लेकिन क्या मुझे यह एक और तरीका करना चाहिए? जावास्क्रिप्ट शायद? उपर्युक्त काम करता है लेकिन विंडो डाउनलोड होने तक "लोड हो रहा है ..." दिखाती है। मैं उपयोगकर्ता को कुछ प्रतिक्रिया देना चाहता हूं कि कुछ हो रहा है।

विचार?

नोट: मेरे पास पहले से ही कोड है जो सर्वर से फ़ाइल भेजता है। यह पूरी तरह से काम करता है। यह सवाल क्लाइंट से उस स्क्रिप्ट को सर्वश्रेष्ठ तरीके से कॉल करने के बारे में है।

कुछ साइटों में ऐसे डाउनलोड होते हैं जो स्वचालित रूप से प्रारंभ होते हैं। वे यह काम कैसे करते हैं?

प्रत्यक्ष यूआरएल के साथ समस्या यह है कि यदि PHP स्क्रिप्ट त्रुटियों से यह मौजूदा पृष्ठ के वेंन्टेंट को प्रतिस्थापित कर देगी, जो मैं नहीं चाहता हूं।

+1

इस प्रश्न में PHP के साथ कुछ भी नहीं है, और जिस तरह से इसका शीर्षक दिया गया है, phrased और टैग किया गया है, भ्रामक रूप से आगंतुकों को कुछ अलग दिखने के लिए आकर्षित करता है। मैं इसे लिख रहा हूं क्योंकि ऐसा पहला परिणाम है जब मुझे कुछ ऐसा लगता है जो वास्तव में PHP के बारे में है। मैंने संपादित करने की कोशिश की लेकिन मेरा संपादन अस्वीकार कर दिया गया था :(इसलिए मैं मूल पोस्टर या किसी अन्य व्यक्ति से पूछ रहा हूं जिसने इस पोस्ट से PHP के किसी भी संदर्भ को हटाने के लिए पर्याप्त विशेषाधिकार प्राप्त किया है। – Tom

+0

यह मेरे साथ भी हुआ टॉम, संपादित। –

+0

मुझे वास्तव में मिला यह उपयोगी है क्योंकि यह पहली बार आया जब मैंने कामकाजी कोड के लिए जावास्क्रिप्ट ' – Boom

उत्तर

13

संपादित

हाँ जावास्क्रिप्ट, कुछ की तरह:

<a href="download.php" onclick="this.innerHTML='Downloading..'; downloadPdf(this);">Download</a> 

आप वास्तव में समझने के लिए की जरूरत है जब डाउनलोड शुरू हो जाता है तो आपको शायद एक आईफ्रेम कॉल करने की आवश्यकता होती है और फिर उस पर "ऑनलोड" ईवेंट का उपयोग करें .. उदाहरण के लिए:

// javascript 
function downloadPdf(el) { 
    var iframe = document.createElement("iframe"); 
    iframe.src = "download.php"; 
    iframe.onload = function() { 
     // iframe has finished loading, download has started 
     el.innerHTML = "Download"; 
    } 
    iframe.style.display = "none"; 
    document.body.appendChild(iframe); 
} 
+0

+1 का उपयोग करके' php सर्वर डाउनलोड फ़ाइल 'की खोज की (इसे देखकर ...) – benlumley

+0

आप लिंक को अक्षम करने के लिए झूठी वापसी को झुकाएं। – Gumbo

2

एक ऑनक्लिक ईवेंट हैंडलर का उपयोग कर एक कताई gif दिखाने के लिए यह नकली

<a href="download.php" onclick="ShowDownloading();">Download</a> 
3

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

2

स्वचालित रूप से शुरू कर डाउनलोड आमतौर पर एक सामान्य पृष्ठ के अंदर एक मेटा टैग का उपयोग करें:

<META HTTP-EQUIV="REFRESH" CONTENT="10.0;URL=download.php"> 

यह उदाहरण download.php को 10 सेकंड में ब्राउज़र रीडायरेक्ट करेगा।

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