ホームページ  >  記事  >  バックエンド開発  >  PHP ZipArchive を介してボリューム内の圧縮パッケージを送受信するにはどうすればよいですか?

PHP ZipArchive を介してボリューム内の圧縮パッケージを送受信するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-07-21 11:04:48900ブラウズ

PHP ZipArchive を介してボリューム内の圧縮パッケージを送受信するにはどうすればよいですか?

Web 開発では、送信のために大きなファイルまたは複数のファイルを圧縮パッケージにパッケージ化する必要がある場合があります。ただし、ネットワーク送信の制限により、圧縮パッケージ全体を一度に送受信できない場合があります。この問題を解決するには、PHP の ZipArchive クラスを使用して、ボリューム内の圧縮パッケージを送受信します。

  1. ボリューム圧縮パッケージの作成

まず、圧縮パッケージ インスタンスを作成し、いくつかの基本パラメーターを設定する必要があります。次に、addFile() メソッドを使用して、圧縮する必要があるファイルを圧縮パッケージに追加します。すべてのファイルを追加した後、split() メソッドを使用してアーカイブを複数のボリュームに分割します。次に、 renameIndex() メソッドを使用して、各ボリュームの名前を指定された命名規則に変更します。最後に、close() メソッドを使用して圧縮パッケージを閉じます。

以下はコード例です:

$zip = new ZipArchive();
$zip_name = 'files.zip';
$chunk_size = 1024 * 1024; // 分卷大小,默认为1MB
$split_index = 1; // 第一个分卷的索引

if ($zip->open($zip_name, ZipArchive::CREATE) === TRUE) {
    $files = array('file1.jpg', 'file2.png', 'file3.txt');
    
    foreach ($files as $file) {
        $zip->addFile($file);
    }
    
    $zip->split($chunk_size);
    
    for ($i = 0; $i < $zip->numFiles; $i++) {
        $zip->renameIndex($i, $split_index . '_' . $zip->getNameIndex($i));
        $split_index++;
    }
    
    $zip->close();
}

上記のコードは、最初に ZipArchive オブジェクトを作成し、圧縮パッケージのファイル名を「files.zip」として指定し、ボリューム サイズは 1MB です。 。次に、3 つのファイルが圧縮パッケージに追加されました。次に、split() メソッドを使用して圧縮パッケージを複数のボリュームに分割し、renameIndex() メソッドを使用して各ボリュームの名前を指定した命名規則に変更します。最後に、close() メソッドを使用して圧縮パッケージを閉じます。

  1. サブボリュームの圧縮パッケージを受信する

受信側は、まず、受信したすべてのサブボリュームを完全な圧縮パッケージに統合する必要があります。これを実現するには、ZipArchive クラスが提供する merge() メソッドを使用します。次に、extractTo() メソッドを使用して、圧縮パッケージ内のファイルを指定したディレクトリに抽出します。

以下はコード例です:

$zip = new ZipArchive();
$zip_name = 'files.zip';
$chunk_size = 1024 * 1024; // 分卷大小,默认为1MB
$output_dir = 'output/';

// 获取所有分卷文件
$files = glob('*.zip');

if ($zip->open($zip_name, ZipArchive::CREATE) === TRUE) {
    foreach ($files as $file) {
        $zip->merge($file, $zip->numFiles);
    }
    
    $zip->extractTo($output_dir);
    $zip->close();

    // 删除所有分卷文件
    foreach ($files as $file) {
        unlink($file);
    }
}

上記のコードは、最初に ZipArchive オブジェクトを作成し、圧縮パッケージのファイル名を「files.zip」として指定し、ボリューム サイズは 1MB です。 。次に、glob() 関数を使用して、すべてのボリューム ファイルを取得します。次に、merge() メソッドを使用して、すべてのボリュームを完全な圧縮パッケージに統合します。最後に、extractTo() メソッドを使用して、圧縮パッケージ内のファイルを指定した出力ディレクトリに抽出します。解凍が完了したら、unlink() 関数を使用してすべてのボリューム ファイルを削除します。

上記のコード例では、PHP ZipArchive クラスを使用して、ボリューム内の圧縮パッケージを送受信できます。これにより、大きなファイル転送の制御と処理が向上し、転送効率と安定性が向上します。

以上がPHP ZipArchive を介してボリューム内の圧縮パッケージを送受信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。