मेरा वेब ऐप CGI :: एप्लिकेशन का उपयोग करके अपाचे mod_perl
पर चलता है। मैं एक जेनरेट की गई फाइल का एक डाउनलोड प्रदान करना चाहता हूं। अतीत में (इससे पहले कि हम mod_perl
और सीजीआई :: ऐप का उपयोग कर रहे थे) मैंने उत्पन्न होने के बाद STDOUT
पर एक सीएसवी फ़ाइल को स्पूल कर दिया था। अब मैं थोड़ा और परिशोधन के लिए शूटिंग कर रहा हूं - स्प्रेडशीट :: लिखित एक्सेल का उपयोग कर एक्सेल स्प्रेडशीट बनाना - और मुझे फ़ाइल हैंडल से इसे प्रिंट करने के लिए प्रतीत नहीं होता है।मैं mod_perl और CGI :: एप्लिकेशन का उपयोग करके एक temp फ़ाइल डाउनलोड कैसे प्रदान कर सकता हूं?
sub export_list {
my $self = shift;
binmode(STDOUT);
my $str;
open my $fh, '>', \$str;
my $workbook = Spreadsheet::WriteExcel->new($fh);
my $worksheet = $workbook->add_worksheet();
$worksheet->write_col(0,0, ['some','data','here']);
warn $str;
return $str;
}
आउटपुट सिर्फ एक खाली प्रतिक्रिया है, और चेतावनी भी खाली है।
जिस विधि का मैं स्प्रेडशीट को फ़ाइलहेडल में लिखने के लिए उपयोग कर रहा हूं वह documentation से काफी सीधे है, इसलिए मुझे लगता है कि समस्या मेरे सीजीआई :: ऐप नोबरी के कारण है। फ़ाइल हैंडल के लिए प्रलेखन के सुझाए गए तरीकों और mod_perl
भी काफी फलहीन साबित हुए।
मुझे लगता है कि मुझे जिक्र करना चाहिए कि मैं विंडोज़ पर चल रहा हूं, और मेरा वर्तमान कामकाज फाइल बनाने और उपयोगकर्ता को इसके लिंक के साथ प्रदान करना है। हालांकि, निर्देशिका को साफ़ करने और ऐसा करने के लिए, और जेनरेट की गई फ़ाइलों तक पहुंच के लिए प्रमाणीकरण के संबंध में, इससे अधिक समस्याएं उत्पन्न होती हैं।
सुझाव? आलोचना की आलोचना?
हाँ मुझे लगता है कि फाइलहैंडल को बंद करने से यह चर को फ्लश करने के लिए मजबूर करता है ताकि मैं इसे वापस कर सकूं। साथ ही, मुझे हेडर में '-attachment =>' filename.xls'' 'जोड़ना पड़ा था या फ़ायरफ़ॉक्स फ़ाइल के साथ क्या करना है, यह नहीं पता था। मैं CGI :: ए :: पी :: स्ट्रीम में देखूंगा, लेकिन जो फाइलें हम बना रहे हैं, वह महत्वपूर्ण नहीं होनी चाहिए। धन्यवाद! – wes