phpMyAdmin のライブラリを使用してファイルに出力する
テストは 2.9.0 を使用しています
copy
<?
require_once('zip.lib.php' );
// 圧縮するファイル
$filename1 = '夏期休暇.xls' ;
$filename2 = '議事録.doc' ;
// クラス作成
$zipfile = new zipfile();
// ファイルをバイナリで読んで、変数にセット
$handle = fopen($filename1, "rb" );
$contents = fread($handle, filesize($filename1));
fclose($handle);
// 追加
$zipfile -> addFile( $contents, $filename1 );
// ファイルをバイナリで読んで、変数にセット
$handle = fopen($filename2, "rb" );
$contents = fread($handle, filesize($filename2));
fclose($handle);
// 追加
$zipfile -> addFile( $contents, $filename2 );
// zip をバイナリで変数にセット
$zip_buffer = $zipfile->file();
// ファイルに変数から書き込む
$handle = fopen("test.zip" , "wb" );
fwrite($handle, $zip_buffer );
fclose($handle);
// 処理終了
print "done" ;
?>
copy
if (@function_exists('gzcompress' )) {
$zipfile = new zipfile();
$zipfile -> addFile($dump_buffer, substr($filename, 0, -4));
$dump_buffer = $zipfile -> file();
}
phpMyAdmin のライブラリを使用してダウンロードさせる
lightbox.on.coocan.jp
copy
HTTP/1.1 200 OK
Server: Zeus/4.2
Date: Sun, 19 Nov 2006 04:17:18 GMT
Content-Type: application/zip
Content-Length: 1294
Accept-Ranges: bytes
Last-Modified: Sat, 18 Nov 2006 13:18:33 GMT
AN HTTPD
copy
HTTP/1.1 206 Partial Content
MIME-Version: 1.0
Server: AnWeb/1.42k
Date: Sun, 19 Nov 2006 04:49:15 GMT
Content-Type: application/x-zip-compressed
Content-Range: bytes 8192-16537/16538
Content-Length: 8346
ETag: "455fde82-409a"
Last-Modified: Sun, 19 Nov 2006 04:33:06 GMT
Connection: close
さくらインターネット
copy
HTTP/1.1 200 OK
Date: Sun, 19 Nov 2006 05:00:17 GMT
Server: Apache/1.3.37 (Unix)
Last-Modified: Sun, 19 Nov 2006 04:57:54 GMT
ETag: "68404d-691-455fe452"
Accept-Ranges: bytes
Content-Length: 1681
Keep-Alive: timeout=3, max=8
Connection: Keep-Alive
Content-Type: application/zip
copy
<?
header( "Content-Type: application/octet-stream" );
header( "Content-disposition: attachment; filename=test.zip" );
require_once('zip.lib.php' );
$filename1 = '夏期休暇.xls' ;
$filename2 = '議事録.doc' ;
$zipfile = new zipfile();
$handle = fopen($filename1, "rb" );
$contents = fread($handle, filesize($filename1));
fclose($handle);
$zipfile -> addFile($contents, $filename1 );
$handle = fopen($filename2, "rb" );
$contents = fread($handle, filesize($filename2));
fclose($handle);
$zipfile -> addFile($contents, $filename2 );
$zip_buffer = $zipfile->file();
print $zip_buffer;
?>
http://winofsql.jp/php/phpmyadmin_lib/output_zip.php
PEAR の File_Archive を使用してファイルに出力する
ドキュメント
copy
<?
require_once "File/Archive.php" ;
// $files is an array of path to the files that must be added to the archive
$files = array( "./test.xls" , "./test.doc" );
// ****************************************************
// toArchive は、アーカイブに書き込む為の Writer で、
// アーカイブは toFiles という ファイル Writer で、ファイルに書き込まれる
// extract は、コンバータで、ファイル名より アーカイブ Writer に渡される。
// ****************************************************
File_Archive::extract(
$files,
File_Archive::toArchive("test.zip" , File_Archive::toFiles( "./" ))
);
?>
処理終了
copy
Compress the data to a tar, gz, tar/gz or zip format
1 string
$filename
name of the archive file
2 File_Archive_Writer
$innerWriter
writer where the archive will be written
3 string
$type
can be one of tgz, tbz, tar, zip, gz, gzip, bz2,
bzip2 (default is the extension of $filename) or any composition
of them (for example tar.gz or tar.bz2). The case of this
parameter is not important.
4 array
$stat
Statistics of the archive (see stat function)
5 bool
$autoClose
If set to true, $innerWriter will be closed when
the returned archive is close. Default value is true.
function toArchive(
$filename,
&$toConvert,
$type = null,
$stat = array(),
$autoClose = true
)
PEAR の File_Archive を使用してダウンロードさせる
copy
<?
require_once "File/Archive.php" ;
// $files is an array of path to the files that must be added to the archive
$files = array( "./test.xls" , "./test.doc" );
File_Archive::extract(
$files,
File_Archive::toArchive("test.zip" , File_Archive::toOutput() )
);
?>
http://winofsql.jp/php/pear/archive/sample_02.php
PEAR の File_Archive を使用してソースコード上のデータをダウンロードさせる
copy
<?php
require_once "File/Archive.php" ;
$dest = File_Archive::toArchive("test.zip" , File_Archive::toOutput());
$dest->newFile("readme.txt" );
$dest->writeData("こんにちは\n" );
$dest->writeData("よろしくお願いします\n" );
$dest->newFile("予定.txt" );
$dest->writeData("明日必ず参りますので\n" );
$dest->writeData("よろしくお願いします\n" );
$dest->close();
?>
http://winofsql.jp/php/pear/archive/sample_03.php
PEAR の File_Archive を使用して個別ファイルを解凍する
copy
<?
require_once "File/Archive.php" ;
$src = Array(
"php-5.1.6-Win32.zip/ext/php_mysql.dll" ,
"php-5.1.6-Win32.zip/php.exe"
);
// ファイルの解凍
File_Archive::extract(
$src,
File_Archive::toFiles()
);
?>
Done