2009年05月29日

phpでURLから画像を一括ダウンロード・改

えーっと、今回は前回やったphpでURLから画像の一括ダウンロードの
改造版です

前回はphpがあるサーバにダウンロードするだけの物でした
おまけに余分なコードがいっぱいで、今日、友人になくても動くよ!
という事実を聞いたので、それ込みで再びやりたいと思います

追加としては、URL先で使われてる画像を取得するのは違いがないのですが
今回、zipにしてまとめてダウンロードできるようにしたいと思います

それではソースを
url_zip_get.php
<?
header( "Content-Type: text/html; Charset=SJIS" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );

	//zip化の為にzip.lib.phpを読み込む
	require_once('zip.lib.php');

	if ($_GET['url_T'] != ""){

		//zipfile用の変数を宣言
		$zipfile = new zipfile();

		//$data_temp からファイルっぽいものを配列に入れる
		preg_match_all('/(?:")?(http:\/\/[^\s"]+)/',
			file_get_contents($_GET['url_T']), $matches);

		//重複したものを省き、名前を整える
		$get_array = array_unique($matches[1]);

		//処理制限時間を外す
		set_time_limit( 0 );

		//配列からデータを読み取りzipに追加していく
		for ($i = 0 ; $i < count($get_array); $i++){
			if(preg_match("/(gif|jpg|png|jpeg)$/i",$get_array[$i])){
				$zipfile -> addFile(file_get_contents($get_array[$i]),
					basename($get_array[$i]));
			}
		}

		header( "Content-Type: application/octet-stream" );
		header( "Content-disposition: attachment; filename=img.zip" );

		//zip化する
		$zip = $zipfile->file();

		//zipを出力
		print $zip;
	}

?>

<FORM
	name="frm"
	method="GET"
	action="url_zip_get.php"
>
	<INPUT
		type="text"
		name="url_T"
		style='width:400px;'
		value="<?=$_GET['url_T']?>"
	>
	<INPUT
		type="submit"
		name="send"
		value="送信"
	>
</FORM>

<?
	//デバッグ表示
	print "<pre>";
	print_r($get_array);
	print "</pre> . <br>";
?>
それではいつもの如く、説明をば まずは、zip化するために phpMyAdmin の zip.lib.php をお借りしました 次に、前回ソースの取り方が分かんないぜ!と言ってたのですが file_get_contents()で普通に取れるみたいです、ここ友人に聞きました!センキュマイフレンド! あとは正規表現もパワーアップしてます、苦手なので解説はしません やってることは前回とほとんど一緒なので、あとはzipの為に こそこそとやっています 今回はダウンロードできると言うことで試せます でも、なんか怖いなぁって方は使用をお控えした方が無難です お試しはこちら 保存したい画像があるページのアドレスを入力して送信を押してみてください きっとこれで出来てるはず・・・ 以上、前回のリベンジでした!
タグ:PHP
posted by 胡瓜 at 20:53 | Comment(0) | メモ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。