2010-12-06 6 views
36

अद्यतन # 1डाउनलोड के लिए एक पाठ फ़ाइल बनाएँ

क्या नीचे नियुक्त किया गया है उत्पादन के लिए यह फ़ाइल प्राप्त करने के लिए स्थान पर है। यह क्या कर रहा है हालांकि स्ट्रिंग डेटा को अन्य रूपों के बाद HTML बना रहा है। फ़ाइल में जो कुछ डाला गया है उसे रोकने के लिए कोई तरीका है और ब्राउज़र पर क्या प्रदर्शित होता है।

अद्यतन # 2

बस exit() जोड़ा गया है और सब ठीक काम करता है। धन्यवाद!

ईओयू

हाय,

मैं चारों ओर देख और क्या मैं पूरी तरह से काम प्राप्त करने के लिए क्या करने की जरूरत पर समझ मिला समान कुछ चीजें देखा लेकिन नहीं काफी पूरी तरह से किया गया है।

इस समय मेरे पास एक ऐसा फॉर्म है जो उपयोगकर्ता कुछ विवरण प्रदान करता है। सबमिट करने पर इसे स्वयं पर पोस्ट किया गया है और POST चर संसाधित किए गए हैं। मेरे पास एक प्रीमेड एचटीएमएल वेब टेम्पलेट है जिसमें जानकारी दी जा सकती है जिसमें ठीक काम करता है और डैंडी सिर्फ str_replace कर रहा है।

जो मैं अभी करने की कोशिश कर रहा हूं वह निर्यात है कि एक सादा पाठ दस्तावेज़ में उपयोगकर्ता को डाउनलोड के रूप में। तो अंतिम परिणाम उपयोगकर्ता क्लिक फॉर्म पर सबमिट होने पर होता है और उसके बाद संशोधित वेबपृष्ठ के साथ एक .txt फ़ाइल के रूप में एक डाउनलोड पॉपअप खुला होता है।

जहां तक ​​मुझे समझ में आता है मुझे HTTP हेडर कार्यक्षमता का उपयोग करके कुछ करने की आवश्यकता है। जो कुछ मैं चाहता हूं उसे हासिल करने के लिए बिल्कुल सही है, मुझे यकीन नहीं है। मैं केवल फाइल को एक बार उपलब्ध होना चाहता हूं, लेकिन मुझे लगता है कि उपयोगकर्ता को डाउनलोड करने के लिए इसे कहीं भी संग्रहीत करना होगा जिसे मैन्युअल रूप से बाद में साफ़ करने की आवश्यकता होगी?

कोई भी मदद या अंक बहुत अच्छा होगा! धन्यवाद।

उत्तर

18

this SO question's accepted solution देखें। basename($File) के लिए अपना स्वयं का फ़ाइल नाम बदलें और फ़ाइलइज़ ($ फ़ाइल) को strlen($your_string) पर बदलें। , (आप mb_strlen सिर्फ मामले में स्ट्रिंग multibyte वर्ण हैं का उपयोग कर सकते हैं।)

+9

+1 दोहराव से बचने और इसलिए अन्य को देखें जहां संभव हो सवाल। –

58

इसे कहीं भी स्टोर करने की आवश्यकता नहीं है। उचित सामग्री प्रकार के साथ सामग्री को बस आउटपुट करें।

<?php 
    header('Content-type: text/plain'); 
?>Hello, world. 

यदि आप एक डाउनलोड प्रॉम्प्ट ट्रिगर करना चाहते हैं तो सामग्री-स्वभाव जोड़ें।

header('Content-Disposition: attachment; filename="default-filename.txt"'); 
22

मक्खी पर फ़ाइलें उत्पन्न करने के लिए नीचे दिए गए कोड का प्रयोग करें ..

<? //Generate text file on the fly 

    header("Content-type: text/plain"); 
    header("Content-Disposition: attachment; filename=savethis.txt"); 

    // do your Db stuff here to get the content into $content 
    print "This is some text...\n"; 
    print $content; 
?> 
+1

मेरे लिए यह हमेशा साइट का स्रोत कोड कोड लाता है, बजाय $ सामग्री –

0
<?php 

    header('Content-type: text/plain'); 
    header('Content-Disposition: attachment; 
      filename="<name for the created file>"'); 
    /* 
    assign file content to a PHP Variable $content 
    */ 
    echo $content; 
?> 
+2

यह अन्य उत्तर के समान है http://stackoverflow.com/a/16440501/2743307 – bibi

+0

मुझे उसी समस्या का सामना करना पड़ा जैसा @eichertc ने किया था । उद्घाटन टैग में "php" प्रत्यय जोड़ना समस्या को हल करता है। –

+0

मैंने अपने अपाचे लॉग की जांच की और यह समस्या थी और यह पोस्ट बहुत उपयोगी था: http://stackoverflow.com/questions/9707693/warning-cannot-modify-header-Information-headers-already-sent-by-error।मैं यहां अपना प्रश्न हटाने के लिए आया था क्योंकि इसे हल किया गया था लेकिन देखा कि यह पहले से ही हटा दिया गया था। –