Μπορείτε να δημιουργήσετε μια δέσμη οποιωνδήποτε αρχείων και να τα μετατρέψετε σε ένα zip αρχείο. Η Laravel παρέχει την ευελιξία για τη δημιουργία ενός αρχείου zip. Αυτό θα μας διευκολύνει να κατεβάσουμε περισσότερα από ένα αρχεία μαζί με συνδυασμένο τρόπο. Είτε μπορείτε να κάνετε λήψη πολλαπλών αρχείων ένα προς ένα κάνοντας κλικ στο κουμπί λήψης ξανά και ξανά. Αλλά θα είναι μια χρονοβόρα εργασία για εσάς. Γιατί, λοιπόν, δεν δοκιμάζουμε κάποια εύκολη και λιγότερο χρονοβόρα προσέγγιση; Ναι, μπορείτε να το κάνετε στο Laravel δημιουργώντας ένα αρχείο zip. θα υλοποιήσουμε Λήψη αρχείου zip laravel λειτουργικότητα σε αυτήν την ανάρτηση. Θα σου δείξω πώς μπορείς φτιάξτε ένα αρχείο zip οποιουδήποτε φακέλου που περιέχει αρχεία. Έτσι, θα εφαρμόσουμε κάτι όπως φαίνεται παρακάτω.
Προαπαιτούμενα
Θα εφαρμόσουμε αυτήν τη λειτουργία στο Laravel 9. Μπορείτε να χρησιμοποιήσετε αυτήν την προσέγγιση και στην προηγούμενη έκδοση του Laravel. Για τη δημιουργία ενός έργου Laravel 9, θα χρειαστεί να έχετε τις ακόλουθες διαμορφώσεις.
- PHP >=8.0.2
- Συνθέτης
- Διακομιστής Apache/Nginx
- VS Code Editor (Προαιρετικό)
- MySQL (έκδοση > 5)
Υποθέτω ότι είστε έτοιμοι με μια εγκατάσταση έργου Laravel 9. Αν όχι, τότε ας δημιουργήσουμε μια νέα ρύθμιση έργου.
Δημιουργία έργου για την υλοποίηση της λήψης αρχείου Zip της Laravel
Για να δημιουργήσετε ένα νέο έργο στο Laravel, μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή στο τερματικό.
composer create-project --prefer-dist laravel/laravel zip-app
Μόλις ρυθμίσετε το έργο, ας δημιουργήσουμε γρήγορα έναν ελεγκτή.
Συνιστάται: Πώς να δημιουργήσετε μια εφαρμογή CRUD χρησιμοποιώντας τον Ajax στο Laravel 9
Δημιουργήστε έναν ελεγκτή για λήψη του αρχείου Zip στο Laravel 9
Για να δημιουργήσετε έναν ελεγκτή, επιστρέψτε στο τερματικό και πατήστε την παρακάτω εντολή.
php artisan make:controller ZipController
Μετά τη δημιουργία του ελεγκτή, χρειάζεστε μερικά αρχεία σε έναν φάκελο τα οποία θα μετατραπούν σε αρχείο zip. Έτσι, για λόγους απλότητας, δημιούργησα έναν νέο φάκελο μέσα στον δημόσιο φάκελο του έργου με το όνομα λουλούδια. Μέσα σε αυτόν τον φάκελο, έχω μερικές εικόνες που πρόκειται να μετατραπούν σε αρχείο zip.
Στη συνέχεια, πρέπει να προσθέσετε το παρακάτω απόσπασμα σε αυτό το χειριστήριο.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use File;
use ZipArchive;
class ZipController extends Controller
{
/**
* Function - Download File
* @param NA
* @return file
*/
public function downloadFile() {
$zip = new ZipArchive;
$fileName = 'flowers.zip';
if ($zip->open(public_path($fileName), ZipArchive::CREATE) === TRUE)
{
$files = \File::files(public_path('flowers'));
foreach ($files as $key => $value) {
$file = basename($value);
$zip->addFile($value, $file);
}
$zip->close();
}
return response()->download(public_path($fileName));
}
}
Στον παραπάνω ελεγκτή, έχω χρησιμοποιήσει PHP ZipArchive τάξη για τη δημιουργία αρχείου zip Laravel. Στη συνέχεια, μέσα στη συνάρτηση, το έχω αρχικοποιήσει δημιουργώντας το αντικείμενο της. Μετά από αυτό, θα δημιουργήσει ένα αρχείο zip με το όνομα λουλούδια.ζιπ και μέσα σε αυτό το αρχείο zip, έχω προσθέσει τις εικόνες λουλουδιών από το φάκελο δημόσια λουλούδια.
Δημιουργία διαδρομής για το Laravel Zip
Για να προσθέσετε μια διαδρομή, μεταβείτε στο web.php και προσθέστε την παρακάτω διαδρομή.
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ZipController;
Route::get('download-zip', [ZipController::class, 'downloadFile']);
Μόλις τελειώσετε, ήρθε η ώρα να ελέγξετε το αποτέλεσμα.
Αποτέλεσμα λήψης αρχείου Zip Laravel
Εκτελέστε την εφαρμογή και επισκεφτείτε τη διεύθυνση URL στο πρόγραμμα περιήγησης για να δείτε το αποτέλεσμα. Μόλις πατήσετε τη διεύθυνση URL, θα λάβετε αυτήν την προτροπή λήψης.
Αφού ολοκληρώσετε τη λήψη, εξαγάγετε το αρχείο zip και ελέγξτε τα αρχεία.
Μετά την εξαγωγή του φακέλου, μπορείτε να δείτε τα αρχειοθετημένα αρχεία να επαναδιαμορφώνονται στα αρχικά αρχεία.
Συνιστάται: Πώς να ανεβάσετε εικόνα χρησιμοποιώντας τον Ajax στο Laravel 9 με επικύρωση
Λοιπόν, αυτό είναι για αυτήν την ανάρτηση. Εάν βρείτε κάποια δυσκολία κατά την εφαρμογή αυτής της λειτουργικότητας, μπορείτε να επικοινωνήσετε μαζί μου. Επίσης, μπορείτε να ρωτήσετε τις αμφιβολίες σας χρησιμοποιώντας την ενότητα σχολίων εδώ. Θα προσπαθήσω να επιλύσω το ερώτημά σας το συντομότερο.