>  기사  >  PHP 프레임워크  >  Laravel에서 Zip 압축 파일을 생성하고 다운로드 가능한 코드 예제 제공

Laravel에서 Zip 압축 파일을 생성하고 다운로드 가능한 코드 예제 제공

不言
不言앞으로
2019-04-02 11:35:353734검색

이 글의 내용은 Laravel에서 Zip 압축 파일을 생성하고 다운로드할 수 있는 코드 예제를 제공하는 내용입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

사용자가 여러 파일 다운로드를 지원해야 하는 경우 가장 좋은 방법은 압축 패키지를 만들어 다운로드용으로 제공하는 것입니다. Laravel의 구현을 살펴보세요.

사실 이것은 Laravel에 관한 것이 아니라 PHP와 더 관련이 있습니다. PHP 5.2부터 존재했던 ZipArchive 클래스를 사용하려면 ext-zip을 확인해야 합니다. php.ini 확장 기능이 활성화되었습니다.

작업 1: 사용자의 송장 파일을 Storage/invoices/aaa001.pdf

코드 표시는 다음과 같습니다.

$zip_file = 'invoices.zip'; // 要下载的压缩包的名称

// 初始化 PHP 类
$zip = new \ZipArchive();
$zip->open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);

$invoice_file = 'invoices/aaa001.pdf';

// 添加文件:第二个参数是待压缩文件在压缩包中的路径
// 所以,它将在 ZIP 中创建另一个名为 "storage/" 的路径,并把文件放入目录。
$zip->addFile(storage_path($invoice_file), $invoice_file);
$zip->close();

// 我们将会在文件下载后立刻把文件返回原样
return response()->download($zip_file);
예제는 간단합니다.

작업 2: 모든 파일을 저장소/송장 디렉터리로 압축합니다.

Laravel 측에서는 변경할 필요가 없습니다. 이러한 파일을 반복하려면 간단한 PHP 코드를 추가하기만 하면 됩니다.

$zip_file = 'invoices.zip';
$zip = new \ZipArchive();
$zip->open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);

$path = storage_path('invoices');
$files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path));
foreach ($files as $name => $file)
{
    // 我们要跳过所有子目录
    if (!$file->isDir()) {
        $filePath     = $file->getRealPath();

        // 用 substr/strlen 获取文件扩展名
        $relativePath = 'invoices/' . substr($filePath, strlen($path) + 1);

        $zip->addFile($filePath, $relativePath);
    }
}
$zip->close();
return response()->download($zip_file);
이것은 기본적으로 완료되었습니다. 이 압축 방법을 구현하기 위해 Laravel 확장이 필요하지 않습니다.

【관련 추천:

PHP 비디오 튜토리얼


위 내용은 Laravel에서 Zip 압축 파일을 생성하고 다운로드 가능한 코드 예제 제공의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제