Cách Tạo Tập Tin ZIP Trong Laravel Bằng Cách Sử Dụng ZipArchive
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...