shoperti / uploader
Smart file uploader for Laravel
v5.8.0
2020-12-07 16:54 UTC
Requires
- php: ^7.2
- illuminate/contracts: 5.7.* || 5.8.*
- illuminate/filesystem: 5.7.* || 5.8.*
- illuminate/http: 5.7.* || 5.8.*
- illuminate/support: 5.7.* || 5.8.*
- intervention/image: ^2.5
Requires (Dev)
- graham-campbell/testbench: ^5.5
- phpunit/phpunit: ^7.5
README
A file uploader for Laravel with support for preprocessing images (resize and auto orientation) using League/Glide.
Note: For auto orientation you must have a PHP installation that supports reading exif.
Installation
Add to composer
"require": { "shoperti/uploader": "~5.8" },
Register the package in one of your providers
public function register() { $this->app->register(\Shoperti\Uploader\UploaderServiceProvider::class); }
Configuration
You can configure it through the .env file using these settings:
UPLOADER_FILES_DISK=s3
UPLOADER_FILES_SUBPATH=files
UPLOADER_FILES_FILE_NAMING=fix
UPLOADER_IMAGES_DISK=s3
UPLOADER_IMAGES_SUBPATH=images
UPLOADER_IMAGES_FILE_NAMING=fix
UPLOADER_IMAGES_RESIZE_MAX_WIDTH=1280
UPLOADER_IMAGES_RESIZE_MEMORY_LIMIT=128M
- Please refer to the config file for more details.
Use
<?php namespace App\Http\Controllers; // Import the Shoperti Uploader Manager in your controller use Shoperti\Uploader\Contracts\UploaderManager; use Shoperti\Uploader\Exceptions\DisallowedFileException; use Shoperti\Uploader\Exceptions\InvalidFileException; use Shoperti\Uploader\Exceptions\RemoteFileException; // To upload or delete a file, just inject the manager either in the constructor // or in the action method class Controller extends BaseController { /** * Uploads a file. * * @param \Shoperti\Uploader\Contracts\UploaderManager $uploaderManager */ public function upload(UploaderManager $uploaderManager) { try { /** @var \Shoperti\Uploader\UploadResult uploadResult */ $uploadResult = $uploaderManager // generate an Uploader through the manager // using the uploaded file or the file URL as argument ->make(request()->file('file') ?: request()->input('file')) // then call the upload() method with the location path as argument ->upload($path = 'my_files', $disk = null); } catch (DisallowedFileException $dfe) { // If the uploaded file has a disallowed mime-type } catch (InvalidFileException $ife) { // If the uploaded file is invalid } catch (RemoteFileException $rfe) { // If the file input was a file-url string which cannot be fetched } } /** * Deletes a file. * * @param \Shoperti\Uploader\Contracts\UploaderManager $uploaderManager */ public function delete(UploaderManager $uploaderManager) { $uploaderManager ->delete($disk = 's3', $filepath = \Request::input('file')) } }
- Please refer to the
UploadResult
implementation for more details.