PHP : Pear 同梱ですぐ使える、動的に ZIP 書庫をダウンロードさせるサンプル


  ダウンロード





ブラウザでダウンロード

ダウンロードして解凍して、そのディレクトリを WWW サーバから表示するようにするだけで
そのままテストできます。ZIP 書庫をダウンロードさせるそのファイル(php)と、そのファイルを
shift_jis に変換したファイルとしてその場で作成して、Pear のライブラリ群も追加します。

仕様上、ファイルサイズをヘッダーに出力しないので、進行状況のプログレスバーは表示されませんが、
動的に作れるところがメリットです。各 Pear は以下のようなライセンスとなっています。

PEAR.php : PHP License 3.0
File_Archive : LGPL
MIME_Type : PHP License 3.0

数年運用してきたものなので、Pear 関連のバージョンが古いですが、
必要ならば最新と入れ替えて下さい。最も最初に必要とするドキュメント
ページのリンクを以下に示します

Manual :: Saving archives

PEARマニュアル:アーカイブの保存 / ライター

  ソースコード




非常に単純ですが、ドキュメントからはなかなか解りにくいものです。
以下の処理でたいていの応用ができると思います。

  

<?
// *********************************************************
// Pear ライブリを使用する為に、include パスを設定し、
// 必要なライブラリを読み込む
// *********************************************************
set_include_path( ".".PATH_SEPARATOR."../pear" );
require_once "File/Archive.php";

// 日本語処理の為に内部エンコードを明示設定
mb_language( "ja" );
mb_internal_encoding("EUC-JP");

// Pear ライブラリを含める
$files = array(
	 "../pear"
);

// ダウンロード用アーカイブを決定
$zip = File_Archive::toArchive(
	"zip_sample.zip",
	File_Archive::toOutput()
);

// このファイル自身を追加する
$files[] = "./zip_download.php";


// shift_jis に変換したファイルを追加する
// 為のエントリを追加
$zip->newFile("zip_download_sjis.php");

// 元データを取得
$txt = file_get_contents( "./zip_download.php" );
// shift_jis に変換
$txt = mb_convert_encoding (
	$txt,
	"shift_jis",
	"euc-jp" );
// エントリに書き込む
$zip->writeData( $txt ); 
$zip->close(); 

// zip 書庫として出力
File_Archive::extract( 
	$files, $zip
); 

?>
  




yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[phpVarious]
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
24/04/20 17:39:59
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube