wielski/laravel-storager

dev-master 2015-12-26 05:00 UTC

This package is not auto-updated.

Last update: 2024-12-11 21:39:26 UTC


README

Features

  • Handle files with Laravel Storage.
  • Load files through Laravel routing instead of public path.
  • Save images with thumbs, sizes are customisable.

Installation

  1. Install File API

    composer require wielski/laravel-fileapi
  2. Set service provider in config/app.php

    Wielski\FileApi\FileApiServiceProvider::class,
  3. publish config file

    php artisan vendor:publish --tag=fileapi_config

Config

in config/fileapi.php

  1. fill in the storage path, which make routes for you.

    'path' => ['/images/event/', '/images/article/'],

    it will generate routes like below :

    Route::get('/images/event/{filename}', function ($filename) {
        $entry = new \Wielski\FileApi\FileApi('/images/event/');
        return $entry->getResponse($filename);
    });
    
    Route::get('/images/article/{filename}', function ($filename) {
        $entry = new \Wielski\FileApi\FileApi('/images/article/');
        return $entry->getResponse($filename);
    });
  2. set default thumb sizes(by key and value)

    'default_thumbs' => ['S' => '96x96', 'M' => '256x256', 'L' => '480x480'],

Usage

Initialize File API

use \Wielski\FileApi\FileApi;
    
$fa = new FileApi(); # use default path (as '/images/')
$fa_event = new FileApi('/images/event/'); # initialize it by giving a base path
$fa_article = new FileApi('/images/article/'); # initiate another instance

Save By Giving Uploaded File

  • Default Usage : get unique filename

    $file = $fa->save(\Input::file('main_image')); // => wfj412.jpg
  • Custimize your upload file name

    $file = $fa->save(\Input::file('main_image'), 'custom-file-name'); // => custom-file-name.jpg
  • By default will set three thumbs(equal scaling)

Thumbnail functions

  • Set custom thumb sizes

    $file = $fa
        ->thumbs([
        	'S' => '150x100',
        	'M' => '300x200',
        	'L' => '450x300'
        	])
        ->save(\Input::file('main_image'));
  • make cropped thumbs

     $file = $fa->crop()->save(\Input::file('main_image'));

Get image url

$fa->get('wfj412.jpg');        // => get image url of 'L' size
$fa->get('wfj412.jpg', 'M');   // => get image url of 'M' size
$fa->get('wfj412.jpg', 'full); // => get image url of full size

Delete image and thumbs

$fa->drop('wfj412.jpg');

Get file fullpath (abstract path from Laravel Storage)

$fa->getPath('wfj412.jpg'); // => '/images/event/wfj412.jpg'

Parse File Path to URL

if you store your file into cloud storage and you want to get url cloud site, you can use url() method to get it

echo $fa->getUrl('wfjsdf.jpg'); // => "https://s3-ap-northeast-1.amazonaws.com/xxx/xxx/55c1e027caa62L.png"

Work with Blade

In your app.php add alias for FileApi class

'FileApi'   => Wielski\FileApi\FileApi::class,

Using in Blade:

{{ FileApi::getFile('/images/avatars/', 'image.jpg', 'S') ?: 'default.jpg' }}

Work with Laravel Storage

  • Get file content

    \Storage::get($fa->getPath('wfj412.jpg'));
  • Write files

    \Storage::put($fa->getPath('wfj412.jpg'));
  • Get Mime Type

    \Storage::mimeType($fa->getPath('wfj412.jpg'));