Giter Site home page Giter Site logo

media's Introduction

Media - Explore, Upload, Delete and Create new folder

Media - Explore, Upload, Delete and Create new folder

You can use this package to upload your media and attach the media to your models.

Version Laravel
^1.0.0 ^6.0.0
^2.0.0 ^8.0.0

Installation

  1. composer require atriatech/media.
  2. add Atriatech\Media\MediaServiceProvider::class to providers array inside config/app.php.
  3. add 'AtriatechMedia' => Atriatech\Media\Facades\AtriatechMedia::class to aliases array inside config/app.php.
  4. add "Atriatech\\Media\\": "vendor/atriatech/media/src/" to autoload => psr-4 object inside composer.json file, then run this command: composer dump-autoload.
  5. If you haven't link your storage, please run this command php artisan storage:link.
  6. run php artisan vendor:publish --tag=atriatech-media-config to copy the config file into config folder.
  7. run php artisan vendor:publish --tag=atriatech-media-public to copy asset files into public folder, running this command with --force flag is recommended.
  8. run php artisan vendor:publish --tag=atriatech-media-migrations to copy the migrations into database/migrations folder.
  9. run php artisan migrate to create the tables.

API

You can use these methods on your model:

Method Parameters Description Example
addMedia $paths - (Single-Array) Add media to your model User::findOrFail(1)->addMedia([$request->input('image')])
updateMedia $paths - (Array) Update media for your model User::findOrFail(1)->updateMedia([$request->input('image')])
removeMedia $name - (Single-Array) Remove media from your model User::findOrFail(1)->removeMedia('image')
getMedia - Return all the media for your model $media = User::findOrFail(1)->getMedia()
getMediaByName $pattern (String) Return all the media that has a name with the provided pattern $media = User::findOrFail(1)->getMediaByName('/(extra_images)/')
getMedium $id - (Integer) Get a single medium of your model with an id, If id is empty it will return the first medium $medium = User::findOrFail(1)->getMedium(2)
getMediumByName $name - (Single-Array) Get a single medium of your model with the name, If the name is empty it will return the first medium $medium = User::findOrFail(1)->getMediumByName('image')

There is a getSubSize method for a single medium which you can get a specific subSize (that you defined in the config file) of an image, using below code:

$medium->getSubSize('thumbnail');

Usage

First, take A look at the atriatech_media.php file in config folder.

Add AtriatechMedia to your model

use Atriatech\Media\AtriatechMedia;

class Product extends Model
{
    ...
    use AtriatechMedia;
    ...
}

In your view you have to load the css and js files and load the media selector:

Example:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Atriatech Media</title>
    <!-- load the css file -->
    @atriatech_media('css')
</head>
<body>
<form method="post">
    @csrf
    <!-- load the media selector -->
    @atriatech_media_start
        @atriatech_media_file('img', '{"name": "image", "placeholder": "Image", "file": ""}')
    @atriatech_media_end
    <!-- load the media selector -->
    <br>
    <button type="submit">Submit</button>
</form>

<!-- load the js files -->
@atriatech_media('js')
</body>
</html>

The @atriatech_media_file directive has two parameters:

  1. ID - for the media selector
  2. OPTIONS - A JSON object with these keys:
{
    "name": "(String)", // the key which you can get in $request object when the form submitted
    "placeholder": "(String)", // placeholder for the media selector
    "file": "(String)", // Current media path to show in media selector
    "id": "(Number)" // Current media id
}

Upload from controller

To upload a file from controller simply use the AtriatechMedia facade.

use Atriatech\Media\Facades\AtriatechMedia;

class HomeController
{
    function index()
    {
        $file = $request->file('file');
        AtriatechMedia::upload($file, 'path'); // path is optional
    }
}

Load with JS

If you want to load the selector with javascript use the instruction below:

add this inside or outside the media selector blade directives.

@atriatech_media_start
<div id="mp3"></div>
@atriatech_media_end

<!-- OR -->

<div id="mp3"></div>

then load the selector with this code

AtriatechMedia.loadMediaSelectorWithJS('mp3', {name: 'mp3', placeholder: 'MP3', accept: '.mp3'});

The parameters of loadMediaSelectorWithJS method are exactly like @atriatech_media_file directive. It only has a third parameter that get true or false. you should pass false if you want to add that div element outside the media selector blade directives.

Integrations

CKEditor

In your view add a textarea:

<textarea name="editor1"></textarea>

Use media as CKEditor file browser:

CKEDITOR.replace( 'editor1', {
    filebrowserBrowseUrl: mediaRoute('atriatech.media.index'),
    filebrowserImageBrowseUrl: mediaRoute('atriatech.media.index') + '?accept={{ config('atriatech_media.mime_types.image/*') }}',
});

media's People

Contributors

dependabot[bot] avatar rezdev94 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.