>PHP 프레임워크 >Laravel >Zip 파일을 생성하고 Laravel에서 다운로드하는 방법은 무엇입니까? (첨부코드 예시)

Zip 파일을 생성하고 Laravel에서 다운로드하는 방법은 무엇입니까? (첨부코드 예시)

藏色散人
藏色散人앞으로
2021-10-14 16:10:461820검색

다음 튜토리얼 칼럼인 Laravel에서는 Laravel에서 Zip 압축 파일을 만드는 방법을 소개하고 다운로드 방법을 알려드릴 예정입니다. 모두에게 도움이 되길 바랍니다!

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: 모든 파일을 storage/invoices 디렉토리로 압축합니다.

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 확장이 필요하지 않습니다.

기사 재인쇄: https://learnku.com/laravel/t/26087

위 내용은 Zip 파일을 생성하고 Laravel에서 다운로드하는 방법은 무엇입니까? (첨부코드 예시)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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