単二電池

perlである別のサイトの画像をサーバーにコピーする手段はあるのでしょうか?

たとえば、yahooのhttp://img.yahoo.co.jp/images/new2.gifをファイルにしたいです。

get_gazou.cgi
にそのソースを記述して、アクセスしたら、指定のサーバー内にファイルを作るというものです。
wgetのperl版です。

A 回答 (2件)

    • good
    • 0

#!/usr/local/bin/perl



$file_name = time . ".gif";
&get_gazou($file_name);

sub get_gazou{
$host = "img.yahoo.co.jp";
$path = "/images/new2.gif";

use Socket;

$port = 80;
$ipaddress = inet_aton("$host");
$sock_addr = pack_sockaddr_in($port,$ipaddress);

socket(SOCKET,PF_INET,SOCK_STREAM,0);
connect(SOCKET,$sock_addr);
select(SOCKET);$ |= 1;select(STDOUT);

print SOCKET "GET $path HTTP/1.0\r\n";
print SOCKET "HOST: $host\r\n";
print SOCKET "\r\n";

open(FILE, ">$_[0]");
while(<SOCKET>){
print FILE "$_";
}
close(SOCKET);

}
こんな感じに出来ます(但しこの場合はヘッダ情報を含めてしまうので除去が必要)。
最近私はwgetをそのまま使ったりします。楽なんですよね。
$command = "wget http://img.yahoo.co.jp/images/new2.gif";
if(!open(WGET,"|$command 2>&0")){print "can't open wget.";}
close(WGET);
サーバにもwgetを置きます。まぁ、普通は置いてありますよね。
Windowsサーバなら、cgiの場所にコピーするだけです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!