mostafaznv / php-x-sendfile
Serve large files using web server with support for laravel
Installs: 4 051
Dependents: 0
Suggesters: 0
Security: 0
Stars: 52
Watchers: 2
Forks: 3
Open Issues: 0
Requires
- php: >=7.0.1
- ext-fileinfo: *
This package is auto-updated.
Last update: 2024-12-15 09:18:06 UTC
README
Serve large files using web server with support for laravel
Some features for X-Sendfile:
- Support Nginx, Apache, LiteSpeed, Lighttpd
- Automatic Server Type Detector
- Configurable
- Support Cache
- Set Extra Headers
- Compatible with Laravel
I develop in a open-source journey 🚀, I wish I lived in an environment where financial situation was fine and I could only focus on the path, but as you may know, life isn't perfect.
So if you end up using my packages, please consider making a donation, any amount would go along way and is much appreciated. 🍺
Requirements:
- PHP >=7.0.1
- FileInfo Extension
Installation
Install using composer:
composer require mostafaznv/php-x-sendfile
Laravel (Optional)
Don't need for Laravel 5.5+
'providers' => [ Mostafaznv\PhpXsendfile\PhpXsendfileServiceProvider::class, ], 'aliases' => [ 'Recaptcha' => Mostafaznv\PhpXsendfile\Facades\PhpXsendfile::class, ]
php artisan vendor:publish --provider="Mostafaznv\PhpXsendfile\PhpXsendfileServiceProvider"
Usage
<?php namespace App\Controllers; use Mostafaznv\PhpXsendfile\PhpXsendfile; class DownloadController { public function quickExample() { $path = '/files/Sample.mp4'; $xSendFile = new PhpXsendfile(); $xSendFile->download($path); } public function completeExample() { $path = '/files/Sample.mp4'; // or full path $path = public_path('files/Sample.mp4'); // optional $config = [ 'server' => null, 'cache' => true, 'cache-control-max-age' => 2592000 ]; // set extra headers (optional) $headers = [ 'Header-Name' => 'Header-Value' // header('Header-Name: Header-Value') ]; // set downloaded filename (optional, nullable) $fileName = 'LargeVideoFile.mp4'; $xSendFile = new PhpXsendfile($config); $xSendFile->setHeader($headers)->download($path, $fileName); } }
Laravel Usage
<?php namespace App\Http\Controllers; use Mostafaznv\PhpXsendfile\Facades\PhpXsendfile; // or use PhpXsendfile; class DownloadController extends Controller { public function quickExample() { $path = public_path('files/zip.zip'); PhpXsendfile::download($path); // or app('x-sendfile')->download($path); } public function completeExample() { $path = public_path('files/zip.zip'); // set extra headers (optional) $headers = [ 'Header-Name' => 'Header-Value' // header('Header-Name: Header-Value') ]; // set downloaded filename (optional, nullable) $fileName = 'LargeVideoFile.mp4'; PhpXsendfile::setHeader($headers)->download($path, $fileName); } }
Note: to change configuration in laravel, open config/x-sendfile.php and set your own configurations.
Config:
Methods
Download
setHeader
I develop in a open-source journey 🚀, I wish I lived in an environment where financial situation was fine and I could only focus on the path, but as you may know, life isn't perfect.
So if you end up using my packages, please consider making a donation, any amount would go along way and is much appreciated. 🍺
Credit and Thanks
this package inspired by songlipeng2003's x-sendfile.
Changelog
Refer to the Changelog for a full history of the project.
License
This software released under Apache License Version 2.0.
(c) 2020 Mostafaznv, All rights reserved.