圧縮ファイルの取得方法を教えてください

このQ&Aのポイント
  • 質問者は、パス指定の方法ではなく、perlを使用して圧縮ファイルを取得する方法を知りたいと述べています。
  • 現在の方法では、zipファイルではなくcgiページのソースが取得されてしまうため、質問者は解決に困っています。
  • 質問者はperlの知識があまりないため、具体的な書き方を教えてほしいとお願いしています。
回答を見る
  • ベストアンサー

圧縮ファイルの取得

http://okwave.jp/qa/q8823112.html こちらで質問させていただいたように、/public_html/file.zipではなく、/file.zipの ファイルをダウンロードさせるために以下の方法を取りました。 print "Content-type: application/x-tar\n\n"; open( FH, "$filename" ); binmode FH; binmode STDOUT; print <FH>; close( FH ); この方法では、ブラウザで表示させてダウンロードできるようになったのですが、 これをperlで、wgetか、何かを使って取得したいと考えています。 ところが、wgetで試したところ、zipファイルではなく、cgiページ自体のソースの取得になってしまいました。 zipファイルを取得するにはどのようにしたらよいのでしょうか。 perlの知識があまりないので、どうしても解決できません。 宜しければ具体的に書き方を教えていただけると大変助かります。どうぞよろしくお願いいたします。

  • Perl
  • 回答数1
  • ありがとう数11

質問者が選んだベストアンサー

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

単に、ファイル名が.cgiになっているだけ、中身は正しいのでは? あるいは、wgetに指定したURLが違っているか

link222
質問者

お礼

ありがとうございます。勘違いしていました。お蔭様で解決致しました。ご親切に感謝いたします。

関連するQ&A

  • はじめまして

    はじめまして 現在、PerlのMVCフレームワークCatalystのperlソースコード内で ボタンを押すと、ユーザーにとあるファイルをダウンロードさせたい と考え、以下のように実装しました my $filedir = '/var/www/html/Catal/lib/Catal/Controller/'; my $filename = 'test.zip'; my $filepath = $filedir . $filename; print "Content-type:application/download; name=\"$filename\"\n"; print "Content-Disposition: attachment; filename=\"hogehoge\"\n\n"; open(FILE,"< $filepath"); binmode FILE; binmode STDOUT; print while(<FILE>); close(FILE); 上記コードを動かすとIEのページにZIPファイルがバイナリ表示されるだけで ダウンロードダイアログすら出ません。 どうしたら、ダイアログを表示させ、ユーザーが望む場所にダウンロード させることができるでしょうか。 よろしくお願いします。

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

    こんにちは。 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;

    • 締切済み
    • CGI
  • バイナリファイルの出力

    「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); -----------------------------------------------------------

    • ベストアンサー
    • Perl
  • perlで動画を表示させたい

    perlで動画を表示させたいのですがうまくいきません。 print "Content-type: video/mpeg\n\n"; open FH,"foo.mpg"; binmode FH; binmode STDOUT; while (<FH>) { print STDOUT; } close FH; exit; MIMEのタイプがちがうのですか? サーバーに設定されているMIMEタイプです。 video/mpeg mpeg mpg mpe video/quicktime qt mov video/x-msvideo avi video/x-sgi-movie movie

    • ベストアンサー
    • CGI
  • 普通の html に cgi を使って画像を・・

    ソースお手本表を見ながら質問タイトルのようなことをやりたいと思いました。 結果はHTMLを実行すると通信が1分から3分ぐらい通信を行い、最後には画像を表示しないようなります。 どこがおかしいのかおしえていただけないでしょうか? どうかお願いします。 ------------------------------------------------ #!/usr/local/bin/perl #use DBI; print "Content-type: image/jpeg\n\n"; open FH,"<image.jpg"; binmode FH; binmode STDOUT; print while(FH); close FH; ------------------------------------------------

    • 締切済み
    • CGI
  • HTMLのファイルにCGI処理結果を表示する

    まずトップページはhtmlで作ります。 そのトップページにいつも変化する所があるのでcgiで処理を施したものをhtmlに貼り付けたいと思っています。 その場合に例えば画像を出力させる場合は <IMG src="cgi-local/top.cgi"> で指定し、 #!/usr/local/bin/perl print "Content-type: image/jpeg\n\n"; open FH,"<../image.jpg"; binmode FH; binmode STDOUT; print while(<FH>); close FH; をやれば動かせますが、これを画像ではなくhtmlを表示させるためには print "Content-type: image/jpeg\n\n"; を print "Content-type: text/html\n\n"; に変更する事により可能だと思いやってみたのですが、うまく出力できませんでした。 cgi処理をうまくhtmlに貼り付ける方法があるのでしょうか。どうか教えて頂けないでしょうか?お願します。(涙)

    • ベストアンサー
    • CGI
  • Perlでのファイル一括読み込み

    Perlにてファイルの一括読み込みを以下記述で実施しております。 実行環境はAIXです。 ------------------------------- #!/usr/bin/perl open(FH,"/tmp/filename1.txt"); @aaa=<FH>; close(FH); print "@aaa\n"; ------------------------------- 上記内容をWindows XPにて実行した場合、何も表示されません。 print文が動いていないのか、ファイルの読み込みができていないのか不明です。 ファイルのパスは以下のように変更しております。 ------------------------------- open(FH,"C:\filename1.txt"); @aaa=<FH>; close(FH); print "@aaa\n"; ------------------------------- Windowsにて動作するようにはどのようにすれば宜しいのでしょうか? 初歩的な質問かもしれませんが、宜しくお願い致します。

    • ベストアンサー
    • Perl
  • CSVダウンロードについて

    IIS/perl/oracle お世話になります。 社内の業務ホームページにて、データをダウンロードできるシステムの改造を行っています。 本番環境とテスト環境があり、ほぼ同じような環境にして あります。 なのに、本番環境ではちゃんと”ファイルをダウンロード”という ダイヤログが表示されるのに、同じモジュールをテスト環境にもってくるとダイヤログが出ずに CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. と出ます。perlの-wcオプションをつけてのデバッグでsyntaxはOKと出るし、本番環境で動くことから、スクリプト自体に問題はないと思っているのですが、環境面で何か設定しなくてはいけないことがあるのでしょうか? 念のためスクリプトを載せます。 binmode(STDOUT); print "Content-Type: application/octet-stream; name=\"$fname\"\n"; print "Content-disposition: attachment; filename=\"$fname\"\n"; print "Content-length: $size\n"; print "\n"; (1) print $CSV; close(STDOUT); どうも(1)あたりでこけてるようなのですが・・・。(少なくともbinmode手前まではprintを差し込んで動いているのを確認できています) IISの設定等、あまり詳しくはないので、初心者向けに 教えていただくと助かります。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • Androidで画像をサーバーから取得したいです

    初めて質問させていただきます。 仕事でAndroidのアプリを作ることになったのですが、まったく初めてのことなので困っています。 やりたいことはサーバにあるMySQLにアクセスして、該当する画像をダウンロードして表示させることです。 http://d.hatena.ne.jp/language_and_engineering/20111121/p1 上記のサイトを参考にさせて頂き、テキストの情報は取得できるのですが、画像の場合はどうしたらいいのかわかりません。 こちらの環境は Android 4.0.3 サーバー CentOS6 アプリを動かすのはタブレットの予定です。 AndroidアプリからPOSTしてサーバーにあるPerlのスクリプトでMySQLへアクセスしています。 Perlのスクリプトは現在テストで画像が返ってくればいいので下記のようにしています。 (一部抜粋) $pic = "./images/test.jpg";#ここには本当はデータベーから返ってきたファイル名が入ります print "Content-type: image/jpg\n\n"; open(IMG, $pic); binmode(IMG); binmode(STDOUT); print $_ while (<IMG>); close(IMG); 皆様お忙しいとは存じますが、なにとぞご教示ください。 よろしく願い致します。

  • perlでCSV形式ファイルのアップロード

    本日、同じ質問をしたものです。 前回の問題は解決したのですが、ファイルがアップロードできないで悩んでします。 CGIのプログラムは以下のソースです。 #! c:/perl/bin/perl use CGI; # CGIヘッダーの出力 print "Content-type: text/html\n\n"; my ($query,$fileName); $query = new CGI; $fileName = $query->param('fileName'); open(OUT, ">./a.csv"); binmode(OUT); while(read($fileName,$buffer,1024)) { print OUT $buffer; } close(OUT); close($fileName); #ファイルハンドルをcloseしています。 exit ; ファイルは、作られるのですが、中身が書き込まれません。 どなたか教えてください。 お願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう