電子書籍の厳選無料作品が豊富!

「test.dat」というファイルをブラウザから
ダウロードさせるためにバイナリ出力をしたいのですが、
空ファイルばかりできて上手くいきません。
以下のようなコードなのですが、どこが悪いでしょうか?
ご教授ください。お願いします。

症状:ブラウザからダウンロードすると、ファイル名は正しいが
空のファイルになっている
環境:perl 5.8.7 windows server2003
-----------------------------------------------------------
#!/usr/local/bin/perl
print "Content-Disposition: attachment; filename=\"test.dat\"\n";
print "Content-Type: application/octet-stream\n\n";
open(IN, "test.dat");
binmode(IN);
binmode(STDOUT);
print while (<IN>);
close(IN);
-----------------------------------------------------------

A 回答 (2件)

 print while (<IN>);


  ↓
 while (<IN>) { print; }

に変えたらどうでしょう?
    • good
    • 0
この回答へのお礼

ありがとうございました。
あれこれやっているウチにできるようになりました。
できなかった理由が今もって不明なのですが・・・

お礼日時:2006/09/13 17:12

こちらで試したところ(WINXP+Apache/2.0.55 (Win32) PHP/5.1.4 )


文法的には問題なさそうですが、、、
あとはfileの問題ではないかと思いますが?

#!/usr/local/bin/perl
$| = 1;
$time=localtime();
print "Content-Disposition: attachment; filename=\"$time.dat\"\n";
print "Content-Type: application/octet-stream\n\n";
open(STDERR, ">&STDOUT");
$file='./test.dat';
open(IN,$file)||die print" $file が有りません -s $file の結果は= ".(-s $file) ."---";

こんなので試したらどうでしょ?
fileが開けない場合、ダウンロードしたものを
テキストエディタで開くとエラーメッセージと fileサイズが記入されていますので参考に、、、

どうしても駄目なら読み込みもとのfileを他のものに変えて試してください
過去に1回だけ、上記のようなスクリプトで確かにfileが実在し
fileサイズも正しく表示されているのに、どうしても読めないfileが有り
別のfileに変えたら、問題なく読めるということがありました
(ずっと後でスキャンディスクしたら、そのfileを記録している部分にエラーが見つかりました)
    • good
    • 0
この回答へのお礼

ありがとうございました。
あれこれやっているウチにできるようになりました。
できなかった理由が今もって不明なのですが・・・

お礼日時:2006/09/13 17:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!