CGI-BBS > CGI > Perl > サーバー上のファイルをダウンロード


カレッヂ
カレッヂ


質問者 かず  投稿日 5/18(金) 18:42:47
どうにもこうにもな状態なので、質問させていただきます
お助け願えると大変有り難いです

複数ファイルを指定して、一括ダウンロードをPerlにて行いたいのですが
どうも、複数ファイルを指定してもダメで、思いついたのが圧縮です
Perlからの複数ファイルを1書庫に圧縮する方法をご教授願います

圧縮形式はクライアントにあわせ、ZIPがLHAだと助かります
サーバー環境としては、UNIX系(SUN)ですが、出来ればWindows系でも
動作するとテスト等で楽になります
(実は本来のサーバーがNTになるかSUNになるか検討中でもあります)
SUNの場合のサーバーはアパッチ、NTならIISがサーバーです
Perlのバージョンは5系です

以上、よろしく御願い致します
回答者 まさ  [削除]  投稿日 5/20(日) 12:44:23
ZIPへの圧縮ならばモジュールを使えば可能です。
LHAの圧縮はわかりません。恐らく無理だと思いますけど。
まったくのゼロから自分でエンジン部分を作るのならば可能でしょうが、モジュールのように
簡単にはいかないです。

PerlにActivePerlを使っていればWindowsでもUNIXでも動きます。
ただどのモジュールを使うのかは忘れてしまったので、もしかしたらWindows版はないかも知
れませんね。

UNIXのモジュールは以下から自分で検索してみて下さい。
http://search.cpan.org/
「ZIP」「ARCHIVE」等で検索すればいいでしょう。

ただ複数のファイルをダウンロードさせるのなら圧縮もいいですが、そのファイルを配列にで
も入れてループさせて順番にダウンロードさせていったらできません?

質問者 本人  [削除]  投稿日 5/21(月) 08:41:58
    foreach $file (@files){
        chomp($file);
        $tmp = $dir . $file;
        open(LOG,"$tmp");
        @DATA = <LOG>;
        close(LOG);
        print "Content-disposition: attachment; filename=\"$file\"\n";
        print "Content-type: text/download\n\n";
        print @DATA;
    }
※@filesにはファイル名、$dirには格納ディレクトリ名
上記のようなスクリプトで試してみたんですが、一つ目のファイル名で
全てのファイル内容が(Contentの2行を含めて)ダウンロードされて
しまいましたので。。。圧縮なんてことを考えていました
回答者 まさ  [削除]  投稿日 5/22(火) 12:17:13
わたしはファイルのダウンロードに
print "Location: ....\n\n";
を使います。

   foreach (@files) {
       $tmp = $dir . $_;
       print "Location: $tmp\n\n";
   }

こうしてやるとどうなりますか?

これはわたしにも想像できないです。
一度やってみて下さい。

質問者 本人  [削除]  投稿日 5/22(火) 12:39:02
まさ さん、ありがとうございます

上記、実験してみました
環境はWin98+An-httpd+ActivePerlです
クライアント側はIE5.5とNN4.75の両方で試しましたが。。。

ファイル名の拡張子がtxtだからかもしれませんが。。。
ひとつめのファイルをブラウザ上に(text/plainのように)表示
して終わりました
二つ目以降は表示すらしません(^^;

もう少しいろいろ試してみます
回答者 まさ  [削除]  投稿日 5/22(火) 14:45:20
Windows環境ですか、それならば使えないかもしれないですね。
わたしもWin95 + Apache1.3.12 + ActivePerl Build522で
print "Location: ...\n\n";
を実行すれば確かおかしくなったと思います。

txtが表示されるのは設定で何とかなります。
AnHTTPDは分かりませんが、Apacheなら.htaccess等でtxtをダウンロード用に変更することは
可能です。

質問者 本人  [削除]  投稿日 5/22(火) 15:00:32
上記サーバーは実験用です
本来のサーバーはSUNでネスケサーバーを使う予定です
サーバーの設定は基本的に私の一存では替えられないのが辛いとろこです
(もっとも、ブラウザの設定で替える方法も有りますが)

それでも、どうやら一つ目のファイルしかうまく行かないようですので。。。
(ひとつめのファイル内容しか表示しないことから)

さらに実験してみます

返信(回答)する


Web裏技