-PR-
  • すぐに回答を!
  • 質問No.7304954
締切り
済み

CGI経由でのPDFファイルをダウンロード

  • 閲覧数775
  • ありがとう数5
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (1/1)

こんにちは。
CGIの初心者です。
今CGI経由でのPDFファイルをダウンロードするというプログラムを作っています。
ただ、ダウンロードしたファイルは開けなく、エラーが出ます。ファイルを確認すると0バイトです。原因はよく分からないので、誰かが教えてください。ありがとうございます。

コードです:

$filename = './data/sheet.pdf';

$source = $filename ;

print qq|Content-type: text/plain\n|;
print qq|Content-Disposition: attachment; filename="$filename"\n|;
print qq|\n|;

#-- ファイルを読み込んで出力
open(FILE,"$source");
binmode FILE;
binmode STDOUT;
while(read(FILE, $value, 4096)){
print $value;
}
close FILE;
通報する
  • 回答数1

回答 (全1件)

  • 回答No.1
レベル12

ベストアンサー率 66% (254/380)

テストしてないので、漏れてるかもしれないけど、 気になったことだけ・・・・ 1) Content-type: text/plain ↓ Content-type:application/pdf 2) Content-Disposition: attachment; filename="$filename" の$filenameはパス('./data/')を含ま ...続きを読む
テストしてないので、漏れてるかもしれないけど、
気になったことだけ・・・・

1)
Content-type: text/plain

Content-type:application/pdf

2)
Content-Disposition: attachment; filename="$filename"

の$filenameはパス('./data/')を含まない、ファイル名('sheet.pdf')のみに。


3)
open(FILE,$source);
をヘッダを printしている前にもってきて
open(FILE,$source) or die("error :$!");
に変更。(ファイルの存在チェック)
補足コメント
take79vnjp

お礼率 100% (1/1)

superside0さん。

早速ご回答して頂きありがとうございます。

指定の通りに直してみましたが、サーバーから"500 Internal Server Error”のエラーが表示されます。ファイルパーミッションを755を変更してみても変わらない。

open(FILE,$source) or die("error :$!");
をprintしている後に書くとダウンロードダイアローグが表示され、ダウンロードできますが、ファイルは0バイトです。
printしている前に書くと上記のエラーが出ます。
投稿日時 - 2012-02-15 10:26:04
お礼コメント
take79vnjp

お礼率 100% (1/1)

superside0さん。

問題を解決できました。ありがとうございました。
投稿日時 - 2012-02-15 14:29:53
  • 回答数1
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ