2017 © Pedro Peláez
 

symfony-bundle dropzone-bundle

Symfony DropzoneBundle

image

evolutasrl/dropzone-bundle

Symfony DropzoneBundle

  • Wednesday, November 8, 2017
  • by evolutasrl
  • Repository
  • 5 Watchers
  • 4 Stars
  • 69 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 2 Open issues
  • 1 Versions
  • 1 % Grown

The README.md

DropzoneBundle

The DropzoneBundle adds support for a direct S3 upload in Symfony2 forms. It provides a form type for sending files directly to your Amazon AWS S3 bucket without touch your webserver., (*1)

Read more about this technique in Aws website., (*2)

Features include:, (*3)

  • Single file upload
  • Multiple file upload

This bundle is well unit tested by phpspec., (*4)

Build Status Scrutinizer Code Quality, (*5)

Installation

Installation is a quick (I promise!) 4 step process:, (*6)

  1. Download DropzoneBundle using composer
  2. Enable the Bundle
  3. Configure the DropzoneBundle
  4. Javascript and css

Step 1: Download DropzoneBundle using composer

Require the bundle with composer:, (*7)

   $ composer require evoluta/dropzone-bundle "1.0.x-dev"

Composer will install the bundle to your project's vendor/evoluta/dropzone-bundle directory., (*8)

Step 2: Enable the bundle

Enable the bundle in the kernel::, (*9)

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Evoluta\DropzoneBundle\EvolutaDropzoneBundle(),
        // ...
    );
}

Step 3: Configure DropzoneBundle

The next step is to configure the bundle to work with the specific needs of your application., (*10)

Add the following configuration to your parameters.yml file., (*11)

dropzone_endpoint: //s3-eu-west-1.amazonaws.com/
dropzone_accessKey: <aws_accesskey>
dropzone_secret: <aws_secret>
dropzone_bucket: <aws_bucket>

You can override configurations from parameters.yml in your type usage., (*12)

Add the following configuration to your config.yml file., (*13)

evoluta_dropzone:
    endpoint: "%dropzone_endpoint%"
    accessKey: "%dropzone_accessKey%"
    secret: "%dropzone_secret%"
    bucket: "%dropzone_bucket%"

Step 4: Add twig configuration

Add in your config.yml file the follow line, (*14)

- 'EvolutaDropzoneBundle:Form:fields.html.twig'

Your config twig area will be like that, (*15)

twig:
    debug:            "%kernel.debug%"
    strict_variables: "%kernel.debug%"
    globals:
       _guardian_company: "@guardian.company.identity_factory"
    form_themes:
        - bootstrap_3_layout.html.twig
        - 'EvolutaDropzoneBundle:Form:fields.html.twig'

Step 5: Javascript and css

Todo: describe assets dump and declare in main template., (*16)

Usage - upload single

With this bundle, is available for you a new form field type called dropzoneS3File. This field type extends the symfony default url field type., (*17)

class DropzoneController extends Controller
{

    public function testAction(Request $request)
    {

        // ...

        $form = $this->createFormBuilder()
            ->add(
                'task1',
                'dropzoneS3File'
            )
            ->add(
                'task2',
                'dropzoneS3File',
                array(
                    'acceptedFiles' => 'image/*',
                    'directory' => 'images/sub1/sub2'
                )
            )
            ->getForm();

        // ...
    }
}

Options

Endpoint

You can override global aws endpoint configuration for this field., (*18)

$form = $this->createFormBuilder()
    ->add(
    'File upload',
    'dropzoneS3File',
    array(
        'endpoint' => '//s3-eu-west-1.amazonaws.com/',
    )
)

AccessKey

You can override global accessKey configuration for this field., (*19)

$form = $this->createFormBuilder()
    ->add(
    'File upload',
    'dropzoneS3File',
    array(
        'accessKey' => '<your accessKey>',
    )
)

Secret

You can override global secret configuration for this field., (*20)

$form = $this->createFormBuilder()
    ->add(
    'File upload',
    'dropzoneS3File',
    array(
        'secret' => '<your secret>',
    )
)

Bucket

You can override global secret configuration for this field., (*21)

$form = $this->createFormBuilder()
    ->add(
    'File upload',
    'dropzoneS3File',
    array(
        'bucket' => '<your bucket>',
    )
)

Acl

Amazon S3 supports a set of predefined grants, known as canned ACLs. Each canned ACL has a predefined a set of grantees and permissions. You ca read more here, (*22)

You can override global all configuration for this field., (*23)

You can use one of these options:, (*24)

  • private
  • public-read
  • public-read-write
  • authenticated-read
  • bucket-owner-read
  • bucket-owner-full-control

The default value is public-read, (*25)

$form = $this->createFormBuilder()
    ->add(
    'File upload',
    'dropzoneS3File',
    array(
        'all' => 'public-read',
    )
)

Directory

The sub directory where to put file. The default value is null., (*26)

$form = $this->createFormBuilder()
    ->add(
    'File upload',
    'dropzoneS3File',
    array(
        'directory' => 'images/sub1/sub2'
    )
)

AcceptedFiles

The default implementation checks the file's mime type or extension against this list. This is a comma separated list of mime types or file extensions. Eg.: image/*,application/pdf,.psd. The default config allow to upload every kind of file., (*27)

$form = $this->createFormBuilder()
    ->add(
    'File upload',
    'dropzoneS3File',
    array(
        'acceptedFiles' => 'image/*'
    )
)

ExpireAt

The expiration element specifies the expiration date and time of the POST policy. Indicate how long the user can wait from page loading to finish upload. It expects to be given a string containing an English date format. You can use this keywords:, (*28)

  • now
  • +1 hour
  • +4 hours
  • +1 day
  • +5 days
  • +1 week
  • +1 week 2 days 4 hours 2 seconds
  • next Thursday
  • last Monday

Internal this function use strtotime read more in php website., (*29)

$form = $this->createFormBuilder()
    ->add(
    'File upload',
    'dropzoneS3File',
    array(
        'expireAt' => '+1 hour'
    )
)

Usage - upload multiple

Still in progress. Please help us!, (*30)

TODO

  • configure aws

License

This bundle is under the MIT license. See the complete license in the bundle:, (*31)

Resources/meta/LICENSE

About

DropzoneBundle is a evolutasrl initiative coded by brainrepo proudly made in Sardinia with love :)., (*32)

Reporting an issue or a feature request

Issues and feature requests are tracked in the Github issue tracker., (*33)

When reporting a bug, it may be a good idea to reproduce it in a basic project built using the Symfony Standard Edition to allow developers of the bundle to reproduce the issue by simply cloning it and following some steps., (*34)

The Versions

08/11 2017

dev-master

9999999-dev http://evolutasrl.github.com

Symfony DropzoneBundle

  Sources   Download

MIT

The Requires

 

The Development Requires

by Brainrepo - Mauro Murru

file upload dropzone