2008-12-29 11 views
119

एक वेब एप्लिकेशन में मैं काम कर रहा हूं, उपयोगकर्ता एक CSV फ़ाइल के लिंक पर क्लिक कर सकता है। माइम-प्रकार के लिए कोई हेडर सेट नहीं है, इसलिए ब्राउजर इसे टेक्स्ट के रूप में प्रस्तुत करता है। मैं इस फ़ाइल को एक .csv फ़ाइल के रूप में भेजना के लिए चाहते हैं, तो उपयोगकर्ता सीधे calc के साथ खोल सकते हैं, एक्सेल, Gnumeric, आदिसीएसवी एमआईएम-प्रकार का उपयोग कैसे करें?

header('Content-Type: text/csv'); 
echo "cell 1, cell 2"; 

अपने कंप्यूटर पर अपेक्षा के अनुरूप इस कोड काम करता है (नहीं है यह हमेशा कैसे होता है?) लेकिन किसी अन्य कंप्यूटर पर काम नहीं करता है।

मेरा ब्राउज़र एक रात का एफएफ 3.0.1 (लिनक्स पर) का निर्माण है। जिन ब्राउज़र में यह काम नहीं करता था वे आईई 7 और एफएफ 3.0 (विंडोज़ पर)

क्या कोई क्विर्क मुझे अनजान है?

उत्तर

207

आप की तरह कुछ कर रही द्वारा एक "इस रूप में सहेजें ..." संवाद खोलने के लिए ब्राउज़र के लिए मजबूर करने की कोशिश कर सकते:

header('Content-type: text/csv'); 
header('Content-disposition: attachment;filename=MyVerySpecial.csv'); 
echo "cell 1, cell 2"; 

कौन सा भर में सबसे प्रमुख ब्राउज़रों काम करना चाहिए।

10

आप एक ऐसी भाषा या ढांचे निर्दिष्ट नहीं कर रहे हैं, लेकिन निम्नलिखित हेडर फाइल डाउनलोड के लिए प्रयोग किया जाता है: डाउनलोड कार्य करने के लिए सार्वजनिक हेडर के रूप में अच्छी तरह से:

"Content-Disposition: attachment; filename=abc.csv" 
4
इंटरनेट एक्सप्लोरर के साथ

आप अक्सर Pragma निर्दिष्ट करना ठीक से ..

header('Pragma: public'); 

बस मेरे 2 सेंट ..

+4

प्रज्ञा: इंटरनेट एक्सप्लोरर के लिए जनता का कोई मतलब नहीं है। (मैंने प्रश्न में घटक पर काम किया, और मैंने स्रोत को दबा दिया)। – EricLaw

+0

संभवतः इसकी वास्तविक उपयोगिता एक पूर्ववर्ती प्रगति को प्रतिस्थापित करने के लिए है: नो-कैश हेडर? – Doin

1

इस कोड को किसी भी फ़ाइल को निर्यात किया जा सकता है, csv

सहित
// application/octet-stream tells the browser not to try to interpret the file 
header('Content-type: application/octet-stream'); 
header('Content-Length: ' . filesize($data)); 
header('Content-Disposition: attachment; filename="export.csv"'); 
+2

"ऑक्टेटस्ट्रीम" का अर्थ "ऑक्टेट-स्ट्रीम" होना है – EricLaw

+2

इससे कुछ ब्राउज़रों में चेतावनी हो सकती है: संसाधन दस्तावेज़ के रूप में व्याख्या किया गया है लेकिन एमआईएमई प्रकार एप्लिकेशन/ऑक्टेट-स्ट्रीम के साथ स्थानांतरित किया गया है – mikeschuld