WebアプリケーションはCGI :: Applicationを使用してApache mod_perl
で動作します。私は生成されたファイルのダウンロードを提供したいと思います。以前は(私たちはmod_perl
とCGI :: Appを使用する前に)生成されたので、STDOUT
にcsvファイルをスプールしました。今私はもう少し洗練された - Spreadsheet :: WriteExcelを使ってExcelスプレッドシートを作成していますが、ファイルハンドルから印刷することはできません。mod_perlとCGI :: Applicationを使って一時ファイルをダウンロードするにはどうしたらいいですか?
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の中ではまっすぐですので、問題は一部のCGI :: App nooberyが原因だと思います。ドキュメントハンドブックで提案されているファイルハンドルのメソッドとmod_perl
は、かなり無駄でした。
私はWindowsで動作していることを言及する必要があります。私の現在の回避策は、ファイルを作成し、そのファイルへのリンクをユーザーに提供することです。しかし、ディレクトリをクリアするときとそうするときに、さらに生成されたファイルへのアクセスのための認証に関して、それはより多くの問題を提起する。
提案?批判を傷つける?
ええ、私はそれを返すことができるように変数にフラッシュするようにファイルハンドルを閉じることを推測します。また、 '-attachment => 'filename.xls''をヘッダーに追加する必要がありました。または、ファイアウォールはファイルの処理方法を理解できませんでした。 私はCGI :: A :: P :: Streamを見ていきますが、作成しているファイルは十分に大きくすべきではありません。 ありがとう! – wes