• ベストアンサー

圧縮ファイルの出力

Tacosanの回答

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「圧縮ファイル」じゃないファイルと同じだと思う. どこに Perl が関係するのかさっぱり分からんけど.

link222
質問者

お礼

ご回答ありがとうございます。 大変申し訳ございません、具体的にどのようにソースを書けば宜しいのでしょうか? perlの知識が余りありません。お手数をおかけし申し訳ありませんが、よろしくお願いします。

link222
質問者

補足

ありがとうございます。解決しました。

関連するQ&A

  • 圧縮ファイルの取得

    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
  • ダウンロード後 zipファイル削除

    アクセスログをZIPファイルにしてダウンロードした後ファイルが自動的に削除されるようにしようと思っていますが、失敗続きです。 今までの軌跡、 1、ZIPファイルをArchive::Zipで作成、print "Location×××.zip:\n\n";でダウンロード後、当該ZIPファイルをunlink 結果、失敗 404エラーになる 2、ZIPファイルをArchive::Zipで作成、print "Location×××.zip:\n\n";でダウンロード後、当該ZIPファイルをENDサブルーチンでunlink 結果、失敗 404エラーになる 3、File::TempをZIPに利用できないか試みるがArchive::Zipはファイルハンドルを使わないため利用できないのではと断念。 とまあこんな感じで現在に至っています。 なぜ削除しなければならないのかというと外部からアクセスされるとアクセスログがダウンロードできるとこまるからです。なのでダウンロード後すぐに削除、できればダウンロード後すぐ削除されれば理想と思っています。 3、に関してですが、ならばZIPにしないでテキストでダウンロードさせればいいじゃんと思うかもしれませんが、色々なファイルをまとめてダウンロードさせたいと思っているので、それはできない状況。 手段を知っている方助けてください。

    • ベストアンサー
    • Perl
  • 次のcgiファイルを開くには? もう一度

    http://oshiete1.goo.ne.jp/qa3951263.html で質問している者です。 間違って、[回答への補足] に書いてしまいました。 もう一度質問させてください。すみません。 Location を 教えていただき、とても感謝しております。 でも、私の 001.cgi は 以下のように始まっております。 print header(-charset => 'Shift_JIS'); print start_html("001.cgi"); このprint header(-charset => 'Shift_JIS');を消して if (param('answer') eq $ans){ print ('Location:002.cgi\n\n'); } else{ print header(-charset => 'Shift_JIS'); ##省略## print endform; { としたのですが、だめでした。 if (param('answer') eq $ans) が 下の方にもう一度出てくるからでしょうか? ###### はじめ ##################### #!/usr/bin/perl -T use strict; use warnings; use CGI qw(-debug :standard); print "Location:1266.cgi\n\n"; ###### おわり ##################### としたら、001.cgi を開くと 002.cgi へ飛ぶことができました。 どこに print "Location:1266.cgi\n\n"; を書けばよいのでしょうか? よろしく、お願いいたします。

    • ベストアンサー
    • Perl
  • PerlでZipファイルを作りたい

    PerlでZipファイルを作りたいのですが上手くいきません。 実行すると「Internal Server Error」になります。 Perlのバージョン:5.008009 文字コードは、Shift_JIS 改行コードは、Unix(LF)、です。 サーバーは「さくら」です。(ドリームホストも試しましたがダメでした) ファイル構成は zip.cgi data.txt 同じ階層に置いてます。 こちら https://www.h-fj.com/blog/archives/2010/07/19-203224.php のサイトを参考にさせてもらって下のように作ったのですが・・・ (print "Content-type: text/html¥n¥n";)は自分で勝手に 「いるんじゃない?」と思って付け加えました。 私、どこが間違っているのでしょうか? よろしくお願いします。 ———————————————————————————— zip.cgi ———————————————————————————— #!/usr/bin/perl use strict; use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); my $zip = Archive::Zip->new(); # Zipのオブジェクト作成 $zip->addFile('data.txt'); # ファイルを圧縮 # Zipファイルに保存する print "Content-type: text/html¥n¥n"; if ($zip->writeToFileNamed('test.zip') == AZ_OK) { print "test.zip is successfully saved.¥n"; } else { print "test.zip save error.¥n"; } exit;

    • ベストアンサー
    • CGI
  • ひとつのCGIファイルに複数のページの動作を管理

    CGI超初心者です。 HTMLファイルにいくつかラジオボタンを設置し、 これとこれを選んだらこのページを開く、 次のページで、 これとこれを選んだらこのページを開く・・・ というような構成でサイトを作っています。 CGIで条件分岐させていますが 書き方が良く分からないので教えてください。 第一ページ用の条件分岐CGIの下に、第二ページ用の条件分岐CGIを書きましたが うまく動いてくれません。 どちらかを削除するとうまく動きます。 ひとつのCGIファイルに、 複数のページの条件分岐をまとめて書くことは出来ないのでしょうか? ページごとに別々のCGIファイルを作成しなければならないですか? 以下具体例です。 ---第一ページ.html--- <form name="q1" action="test.cgi" method="POST" > ・・・ <input type="submit" value="送信する" /> </form> ---第二ページ.html--- <form name="q2" action="test.cgi" method="POST" > ・・・ <input type="submit" value="送信する" /> </form> ---CGI--- #====================下準備====================== if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $str, $ENV{'CONTENT_LENGTH'}); } else { $str = $ENV{'QUERY_STRING'}; } foreach $i (split('&', $str)) { $i =~ tr/+/ /; $i =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; ($t1, $t2) = split('=', $i); $FORM{"$t1"} = $t2; } #===================変数の設定=================== $q11 = $FORM{'q11'}; $q12 = $FORM{'q12'}; #=================条件分岐_質問1================= if ($q11 eq "q11_a") { print "Location: ./ba1.html\n\n"; } elsif ($q11 eq "q11_c") { print "Location: ./ba2.html\n\n"; } ・ ・ ・ else { print "Location: ./go2.html\n\n"; } #===================変数の設定=================== $q21 = $FORM{'q21'}; $q22 = $FORM{'q22'}; #=================条件分岐_質問2================== if ($q21 eq "q21_a") { print "Location: ./co3.html\n\n"; } elsif ($q22 eq "q22_a") { print "Location: ./ba4.html\n\n"; } ・ ・ ・ else { print "Location: ./go3.html\n\n"; }

    • ベストアンサー
    • CGI
  • PerlのLocation:が文字として出力されてしまいます

    Perl/CGI内でボタンを配置し、そのボタンを押すとサブルーチンにあるprint "Location: $戻り先\n\n";でジャンプするようにしたいのですが、 「Content-type: text/html」より後にLocationを使うとジャンプせずに画面に文字として「Location: $戻り先」と表示されてしまいます。 このような場合どうすればよいのでしょうか?

    • ベストアンサー
    • CGI
  • ファイルの圧縮について

    ファイルを圧縮ファイルにするのに、アイコンを右クリック⇒ZIPを選択するのですが、Lhacaになってしまいます。 メールに添付したいのですが、どうすればZIPにできますか? お手数ですがよろしくお願いします。

  • テキストファイル内の変数を展開して出力したい

    テキストファイル内に変数を書いておいて、出力時に その変数を展開させる方法を教えてください。 具体的には、[test.txt]を[出力]のようにしたいのです。 ためしに[test.cgi]を作ったのですが[test.txt]の内容がそのまま出てきてしまいました。 [test2.cgi]ができるなら、[test.cgi]でもできると思っていたのですが… [test.cgi] #!/usr/local/bin/perl $moji="OK"; print "Content-type: text/html\n\n"; open(IN, 'test.txt'); while (<IN>) { print "$_"; } close(IN); exit; [test2.cgi] #!/usr/local/bin/perl $moji="OK"; $naka="<HTML><BODY>$moji</BODY></HTML>"; print "Content-type: text/html\n\n"; print "$naka"; } close(IN); exit; [test.txt] <HTML><BODY>$moji</BODY></HTML> [出力] <HTML><BODY>OK</BODY></HTML>

    • ベストアンサー
    • Perl
  • Locationでターゲット指定はできますか?

    print("Location: ../admin.cgi?action=head&page=cnn\n\n"); のように他のcgiへページを移行しているのですが、フレームの中に cgiファイルを出力しているのでtargetの指定が必要になります。 Locationを使ってtarget指定は出来ないのでしょうか? もし、やったことのある人がいればご指導ください。

    • ベストアンサー
    • Perl
  • a.cgi → b.cgiへデータの受渡し方法

    a.cgi → b.cgiへデータの受渡しを行いたいのですが i-modeのHPで,画面入力させた内容を a.cgi → b.cgiに受け渡す方法を教えて下さい。 例?:a.cgiに下記のコーディングでは無理ですよね・・・ $aa=$FORM{'aa'}; print "Location: http:・・・・・i/b.cgi?a=$aa\n\n";

    • ベストアンサー
    • Perl