ちょっと料理名っぽいですが。
MODxをちょい前から使っているのですが、このMODxは動的にサイトを見せることも可能だし、静的HTMLのエクスポートも可能。
で、今回は、MODxはサイトのジェネレータとして使う事を考え、エクスポートしたファイルをダウンロードできる仕組みを作成。
簡単に言えば、
1. managerから、『サイトのエクスポート』
2. zipダウンロードするmoduleを作成し、指定階層以下のフォルダをzipにしてダウンロード
という流れです。
で、2のところですが、pearのFile/Archive.phpを使いました。
使い方としては、
前提としては、$tardir:zipファイルを作成するフォルダ
File_Archive::extract(
File_Archive::read( $tardir.’export/’ ),
File_Archive::toArchive(‘Files.zip’, File_Archive::toOutput() )
);
でいけるはずなのですが、zipを展開できなかった。(Binaryで見てみると、圧縮しているというよりは、ファイルの頭がHTML宣言だったので、きっと圧縮に失敗している)
なので、一度サーバでファイルを作成し、ダウンロードしてからzipファイルを削除 という流れに変更。
変更後がこれ。
File_Archive::extract(
File_Archive::read( $tardir.’export/’ ),
File_Archive::toArchive($tardir.’Files.zip’, File_Archive::toFiles() )
);
$params = array(
‘file’ => $tardir.’Files.zip’,
‘contenttype’ => ‘application/zip’,
‘contentdisposition’ => array(HTTP_DOWNLOAD_ATTACHMENT, ‘Files.zip’),
);
$ret = HTTP_Download::staticSend($params);
unlink($tardir.’Files.zip’);
これで無事zipファイルをダウンロードできました。
2008年2月13日21:28