php zip压缩文件及下载

方法一:
    require_once('zip.lib.php');
   
    // クラス作成
    $zipfile = new zipfile();
   
    // ファイル1を圧縮する
    if(!empty($filename_1) and is_file($filepath.$filename_1)) {
        // ファイルをバイナリで読んで、変数にセット
        $handle = fopen($filepath.$filename_1, "rb");
        $contents = fread($handle, filesize($filepath.$filename_1));
        fclose($handle);
       
        // 追加
        $zipfile->addFile( $contents, $filename_1 );
    }

    // ファイル2を圧縮する,ファイルをバイナリで読んで、変数にセット
    if(!empty($filename_2) and is_file($filepath.$filename_2)) {
        // ファイルをバイナリで読んで、変数にセット
        $handle = fopen($filepath.$filename_2, "rb");
        $contents = fread($handle, filesize($filepath.$filename_2));
        fclose($handle);
       
        // 追加
        $zipfile->addFile( $contents, $filename_2 );
    }

    // ファイル3を圧縮する,ファイルをバイナリで読んで、変数にセット
    if(!empty($filename_3) and is_file($filepath.$filename_3)) {
        // ファイルをバイナリで読んで、変数にセット
        $handle = fopen($filepath.$filename_3, "rb");
        $contents = fread($handle, filesize($filepath.$filename_3));
        fclose($handle);
       
        // 追加
        $zipfile->addFile( $contents, $filename_3 );
    }
   
    // zip をバイナリで変数にセット
    $zip_buffer = $zipfile->file();
   
    // ファイルに変数から書き込む
    $handle = fopen("download.zip", "wb");
    fwrite($handle, $zip_buffer );
    fclose($handle);
   
    // ダウンロード
    //header("Content-Type:text/html; charset=shift-jis");
    header("Content-Type: application/octet-stream");
    header('Content-Disposition: attachment; filename=download.zip');
    header('Content-Length: '.filesize('download.zip'));
    readfile('download.zip');


方法二:
require_once 'File/Archive.php';

    File_Archive::extract(
        File_Archive::read(array(
            $filepath.$filename_1,
            $filepath.$filename_2,
            $filepath.$filename_3
        )),
        File_Archive::toArchive($id . '.zip', File_Archive::toOutput())
    );
备注:这个方法起初用错了,
File_Archive::extract(
  File_Archive::read($dir),
  File_Archive::toArchive($fileName, File_Archive::toOutput())
);
$dir:圧縮するディレクトリ名
$fileName:ダウンロードファイル名(tar, gz, bz2, tgz, tbz, zipが可能)
File_Archive::toOutput():圧縮したファイルをダウンロードする。

若使用 File_Archive::toFiles(),则是把压缩文件保存至server再下载!


方法三:
普通文件下载:
$fp=fopen($filename,'r');
$Content=fread($fp,filesize($filename));fclose($fp);

header ("Content-type:".$result_file[0][c_filetype]);
header ("Content-Disposition: attachment; filename=".$result_file[0][c_filename] );

echo 
$Content;

或:
// CSVファイルをダウンロードする
header("Content-Type: application/x-csv");
header("Content-Disposition:attachment; filename=online_entry.csv");
//$fpExp = fopen( 'export.csv', 'r');
       
header('Content-Length: '.filesize('../'.CSVpath));
readfile('../'.CSVpath);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值