お友達の胡瓜メモ帳: phpでURLから画像を一括ダウンロード・改とほぼ同じですが、こちらも授業で作成したのでメモ。
これだけの作業がグッとされると気分が良いですし、まるごとダウンロードって言うのがなかなかおいしい気がします。
まぁ、取るつもりの無かったものまで付加されますが。
作成するにあたっての参考ページは以下です。
PHP で zip 圧縮
ここにあるように、「phpMyAdmin」内のzip圧縮用ライブラリとダウンロードライブラリを使用しています。
こちらが現物です。
IEの場合は自動でテキストボックスまで移動されますが、他のブラウザでは広告が表示されると思います。
そのままどうぞスクロールしてみてください。
画像を一括ダウンロードしたいサイトのアドレスをそのままテキストボックスへ入れて「送信」すると、少しレスポンスは悪いですが「img[年月日_時分秒].zip」がダウンロードできます。
解凍するとサイトにある画像が全部入っているはずです。
以下はソースになりますので、見たい人だけどうぞ。
▼続きを読む/たたむ
今回は3つに分かれています。
「zip/lib.php」は説明対象外として、「view.php」「tozip.php」が本体となります。
view.php
<?
header( "Content-Type: text/html; Charset=SJIS" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
?>
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<TITLE>ほるめすメモ帳inBlogger - ページ内画像一括zip圧縮PHP</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function init(){
window.scroll(0,150);
}
//-->
</SCRIPT>
</HEAD>
<BODY onload='init();'>
<FORM
name="frm"
method="GET"
action="tozip.php"
>
<INPUT
type="text"
name="url"
style='width:300px;'
><br>
<INPUT
type="submit"
name="send"
value="送信"
>
</FORM>
</BODY>
</HTML>
tozip.php
<?
header( "Content-Type: text/html; Charset=SJIS" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
// ライブラリを参照
require_once('zip.lib.php');
if ( $_GET['send'] != '' ) {
// 配列準備
$flist = array();
// zip名作成
$zipname = date("ymd_His");
// クラス作成
$zipfile = new zipfile();
//$data_temp からファイルっぽいものを配列に入れる
preg_match_all('/(?:")?(http:\/\/[^\s"]+)/',
file_get_contents($_GET['url']), $matches);
//重複したものを省き、名前を整える
$get_array = array_unique($matches[1]);
//処理制限時間を外す
set_time_limit( 0 );
// 画像ファイルであるフルパスだけを配列に格納していく
foreach ($get_array as $value){
if(preg_match("/(gif|jpg|png|jpeg)$/i",$value)){
array_push( $flist , $value);
}
}
// 全画像フルパスをループ処理する
for ( $i = 0; $i < count($flist); $i++){
// 画像データを展開する
$handle = file_get_contents($flist[$i]);
// ファイル情報として追加
$zipfile -> addFile( $handle, basename($flist[$i]) );
}
// 全データを.zipファイルとして変数に代入
$zip_buffer = $zipfile->file();
header( "Content-Type: application/octet-stream" );
header( "Content-disposition: attachment; filename=img".$zipname.".zip" );
header("Content-Length: ".strlen($zip_buffer));
// 表示(実際にはzip生成)
print $zip_buffer;
}
?>
0 件のコメント:
コメントを投稿