Laravel 8 Zip 파일을 만들고 다운로드하는 방법은 무엇입니까?

원래 @https://codeanddeploy.com에 게시된 샘플 코드를 방문하여 다운로드합니다.
https://codeanddeploy.com/blog/laravel/how-to-create-laravel-8-zip-file-and-download

이 게시물에서는 Laravel 8 zip 파일을 수행하고 파일을 압축한 후 다운로드해 보겠습니다. 이 튜토리얼은 ZipArchive 클래스와 stechstudio/laravel-zipstream 라는 Laravel 패키지를 사용하여 파일을 압축하고 다운로드하는 데 도움이 됩니다.

따라서 이 게시물에서는 애플리케이션에서 Laravel zip을 구현하는 방법에 대해 두 가지 방법을 배웁니다.

방법 #1: ZipArchive 클래스 사용



이 방법에서는 PHP ZipArchive 클래스를 사용하여 선택한 폴더를 반복하여 zip 파일에 첨부하고 다운로드합니다.

먼저 컨트롤러를 만들어야 합니다.

php artisan make:controller ZipController


그런 다음 경로를 만듭니다. 아래 코드를 참조하십시오.

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ZipController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('zip', [ZipController::class, 'index']);


이제 컨트롤러에서 Laravel zip을 구현해 보겠습니다. 아래는 ZipController의 전체 코드입니다.

<?php

namespace App\Http\Controllers;

use File;
use ZipArchive;
use Illuminate\Http\Request;

class ZipController extends Controller
{
    public function index() 
    {
        $zip = new ZipArchive;

        $fileName = 'zipFileName.zip';

        if ($zip->open(public_path($fileName), ZipArchive::CREATE) === TRUE)
        {
            // Folder files to zip and download
            // files folder must be existing to your public folder
            $files = File::files(public_path('files'));

            // loop the files result
            foreach ($files as $key => $value) {
                $relativeNameInZipFile = basename($value);
                $zip->addFile($value, $relativeNameInZipFile);
            }

            $zip->close();
        }

        // Download the generated zip
        return response()->download(public_path($fileName));
    }
}


참고: 이 코드를 테스트하고 이미지 및 PDF와 같은 일부 파일을 저장하려면 공용 디렉토리에 파일 폴더를 만드는 것을 잊지 마십시오.

이제 위의 코드를 작성해 보겠습니다. 다음 명령을 실행합니다.

php artisan serve


그런 다음 다음 URL을 실행합니다.

http://127.0.0.1:8000/zip


이제 파일이 선택된 zip 파일을 다운로드합니다.

방법 #2: Laravel Zip 패키지 사용



이 방법에서는 stechstudio의 laravel-zipstream 패키지를 사용하고 있습니다. 이것을 설치하여 시작합시다.

composer require stechstudio/laravel-zipstream


그런 다음 컨트롤러 메서드를 만들어 보겠습니다. 나는 그것을 method2라고 명명했습니다. 아래 코드를 참조하십시오.

<?php

namespace App\Http\Controllers;

use File;
use Zip;
use Illuminate\Http\Request;

class ZipController extends Controller
{
    public function method2() 
    {
        return Zip::create('zipFileName.zip', File::files(public_path('files')));
    }
}


그런 다음 경로를 만들어 보겠습니다.

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ZipController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('zip-download', [ZipController::class, 'method2']);


그런 다음 이 패키지를 사용하여 Laravel zip을 테스트합니다.

브라우저에 대한 URL을 실행합니다.

http://127.0.0.1:8000/zip-download


이 패키지에 대한 자세한 내용은 설명서here를 참조하십시오.

이제 Laravel zip을 구현할 때 2가지 방법을 배우는데 도움이 되었으면 합니다. 위의 방법에 무엇을 사용할지는 귀하에게 달려 있습니다.

이 튜토리얼이 도움이 되었으면 합니다. 이 코드를 다운로드하려면 여기https://codeanddeploy.com/blog/laravel/how-to-create-laravel-8-zip-file-and-download를 방문하십시오.

행복한 코딩 :)

좋은 웹페이지 즐겨찾기