• 締切済み

CGI経由PDFダウンロードでエラー

CGIの知識が全くなく、いろいろなサイトを参考にさせていただいています。 表現等が正しくないことがあるかもしれませんが、ご了承下さい。 htmlのsubmitからcgiを経由してpdfをダウンロードさせるように作成中です。 cgiは、下記Uページを参考にさせていただきました。 http://www.abe-tatsuya.com/web_prog/perl_cgi/content_disposition.php #実際の記述<----------------------------------------------- #-- ダウンロードさせる元ファイル $source = 'doc.pdf'; #-- 保存時のファイル名(デフォルト) $filename = '申込書.pdf'; #-- HTTPヘッダ送信 print qq|Content-type: application/pdf\n|; print qq|Content-Disposition: attachment; filename="$filename"\n|; print qq|\n|; #-- ファイルを読み込んで出力 open(FILE,"$source"); while(<FILE>){print;} close(FILE); #---------------------------------------------------------> 上記の結果、ダウンロードはできるのですが、 Acrobatのエラーで、「この文章を開くときにエラーが発生しました。ファイルが壊れています。修復できませんでした。」 というメッセージが表示されます。 PCを変えてみたりもしましたが、どのPCからダウンロードしても同じです。 ちなみに、ウェブサーバーへアップロードする前のpdfは、ちゃんと開きます。 何が原因なのでしょうか?

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

では、元のファイルと、ダウンロードしたファイルを、バイナリー比較可能なツールを使って比較してみてください。 おそらく、違ったものになっています。 ファイルをテキストモードで開いて、「1行」ずつ読み込んで(<FILE>)、 テキストモードで出力(print)しています。 テキストモードでバイナリファイルの読み書きをすると、「文字化け」を起すことがあります。 binmodeでバイナリーモードにしましょう。 <>はバイナリーには向かないので、 read等を使いましょう http://perldoc.jp/func/read このプログラムに無い部分や、サーバーの設定によっては、別の対策も必要かもしれません。

関連するQ&A

専門家に質問してみよう