Cách Tạo Tập Tin ZIP Trong Laravel Bằng Cách Sử Dụng ZipArchive

2019/01/28 3,662 Views Laravel

Xin chào, bài việt này tôi sẻ chia sẻ với bạn làm thế nào để tạo zip trong laravel sử dụng ZipArchive đã được tích hợp trong Laravel. Có thể bạn cần để tạo ra các chức năng để làm cho một số dự án ứng dụng tập tin hoặc của một dự án zip và tải về tất cả trong tập tin zip.

Bạn đang sử dụng tốt package laravel đã cung cấp chức năng này. Nhưng trong bài viết này tôi không sử dụng bất kỳ gói (package) hỗ trợ nào. Tôi sẻ sử dụng ZipArchive lớp để tạo ra một tập tin zip trong Laravel.

Làm thế nào để tạo ra chức năng zip với ZipArchive lớp? Tôi sẻ hướng dẫn cho bạn từng bước. Xin vui lòng, chỉ cần làm theo bước này.

Bước 1: Tạo 1 route

Route::get('create-zip', 'ZipArchiveController@index')->name('create-zip');

Bước 2: Tạo nút download đơn giản

<!DOCTYPE html>
<html>
    <head>
        <title>Create Zip</title>
        <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    </head>
    <body>
        <div class="container">
            <a href="{{ route('create-zip',['download'=>'zip']) }}" class="btn btn-info" >Download ZIP</a>
        </div>
    </body>
</html>

Bước 3: tạo controller

Đó là cuối cùng và bước cuối cùng, chúng tôi đang tạo ra ZipArchiveController và đơn giản đặt mã sau đây trong nó.

namespace App\Http\Controllers;

use App\Http\Requests;
use Illuminate\Http\Request;
use ZipArchive;

class ZipArchiveController extends Controller
{
    /**
    * Show the application dashboard.
    *
    * @return \Illuminate\Http\Response
    */
    public function index(Request $request)
    {
        if($request->has('download')) {
        // Define Dir Folder
        $public_dir=public_path();
        // Zip File Name
        $zipFileName = 'AllDocuments.zip';
        // Create ZipArchive Obj
        $zip = new ZipArchive;
        if ($zip->open($public_dir . '/' . $zipFileName, ZipArchive::CREATE) === TRUE) {
            // Add File in ZipArchive
            $zip->addFile(file_path,'file_name');
            // Close ZipArchive
            $zip->close();
        }
        // Set Header
        $headers = array(
            'Content-Type' => 'application/octet-stream',
        );
        $filetopath=$public_dir.'/'.$zipFileName;
        // Create Download Response
        if(file_exists($filetopath)){
            return response()->download($filetopath,$zipFileName,$headers);
        }
        return view('createZip');
    }
}

Lưu ý: Nếu bạn muốn thêm nhiều file vào 1 file zip. Vì vậy, xin vui lòng sử dụng sau đoạn mã để thêm tập tin trong ZipArchive.

if ($zip->open($public_dir . '/' . $zipFileName, ZipArchive::CREATE) === TRUE) {
    // Add Multiple file
    foreach($files as $file) {
        $zip->addFile($file->path, $file->name);
    }
    $zip->close();
}

Bây giờ chúng tôi đang sẵn sàng để chạy các ví dụ của chúng tôi để chạy dưới quyền chỉ huy ro nhanh chóng chạy:

php artisan serve

Bây giờ bạn có thể mở dưới URL trên trình duyệt của bạn:

http://localhost:8000/create-zip

Nếu bạn gặp phải bất kỳ vấn đề sau đó xin vui lòng viết bình luận hoặc cung cấp cho một số gợi ý để cải thiện. Cảm ơn...