2009-10-02 18 views
12

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

फिलहाल, मैं फॉर्म सबमिशन को संसाधित करता हूं और उपयोगकर्ता के लिए एक उपयुक्त फ़ाइल उत्पन्न करता हूं और उपयुक्त हेडर के साथ इसे आग लगा देता हूं। उदाहरण के लिए ...

header('Content-type: "application/octet-stream"'); 
header('Content-Disposition: attachment; filename="yourfile.txt"'); 
header("Content-Transfer-Encoding: binary"); 

हालांकि, चूंकि यह तुरंत डाउनलोड शुरू होता है, मूल रूप ब्राउज़र द्वारा स्क्रीन पर छोड़ा जाता है।

डाउनलोड पूर्ण होने के बाद मैं वास्तव में कुछ "धन्यवाद" स्क्रीन पर जाना चाहूंगा (या डाउनलोड शुरू होने से पहले)। मुझे पता है कि यह संभव है, क्योंकि आपके द्वारा देखी जाने वाली लगभग हर डाउनलोड साइट यह होती है (आमतौर पर डाउनलोड शुरू होने से पहले आपको विज्ञापन से भरा पंप करने के लिए)।

तो, मैं एक "धन्यवाद" स्क्रीन कैसे दिखा सकता हूं जो एक सेकंड के बाद डाउनलोड शुरू करता है?

कोई समाधान प्रस्तावित बैक बटन के व्यवहार को कैसे प्रभावित करेगा, क्योंकि मैं नहीं चाहता कि फाइल फिर से भरने के बिना फ़ाइल डाउनलोड कर रही हो?

मैं सर्वर पर PHP का उपयोग कर रहा हूं और क्लाइंट पर उपलब्ध जावास्क्रिप्ट (और jQuery) पर भरोसा कर सकता हूं।

धन्यवाद।

उत्तर

23

आप प्रपत्र भेज सकते हैं करने के लिए आप दस्तावेज़ धन्यवाद और वहाँ डाल एक मेटा फ़ाइल को डाउनलोड करने ताज़ा:

<meta http-equiv="refresh" content="3;url=download.php"> 
<p>Thank you! The download will start in 3 seconds. If not, use this link to download the <a href="download.php">file</a></p> 
+0

सिर्फ एक नोट - फ़ायरफ़ॉक्स में ट्रिगर नहीं होता – Andrej

+1

@Andrej क्या आपने 'मेटा 'में' मेटा' और 'पी' को 'बॉडी' में रखा है? – Gumbo

3

एक दूसरे पृष्ठ है कि कुछ कहते हैं, "धन्यवाद जोड़ें, अपने donwnload होगा कुछ ही सेकंड "में शुरू करने और डाउनलोड जावास्क्रिप्ट का उपयोग करने से चलाता है:

$(document).ready(function(){ 
    window.setTimeout(function(){ 
    window.location = 'http://yourdownloadhost.com/file.zip'; 
    }, 1500); 
}); 

या एक मेटा रीडायरेक्ट का उपयोग करें।

+0

जब मेटा रीडायरेक्ट भी काम करता है तो जावास्क्रिप्ट का उपयोग क्यों करें? –

+0

ठीक है, जैसा कि आप मेरी टिप्पणी से गम्बो की पोस्ट में देख सकते हैं, मैं खुद मेटा रीडायरेक्ट पसंद करता हूं। हालांकि, मैं ओपी के द्वारा गुमराह था "जावास्क्रिप्ट (और jQuery) पर भरोसा कर सकते हैं"। हालांकि, कुछ templating प्रणाली में सामान इंजेक्षना मुश्किल है। तो कभी-कभी जेएस एक विकल्प हो सकता है। – middus

+0

हेडर में भी होना चाहिए। शरीर में AFAIK जावास्क्रिप्ट अवैध हैं। –

0

आप अपने पृष्ठ में एक छिपा हुआ आईफ्रेम डाल सकते हैं और इस फॉर्म को अपना फॉर्म सबमिट कर सकते हैं।

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