Download the PHP package ethsam/symfony-dropzone without Composer

On this page you can find all versions of the php package ethsam/symfony-dropzone. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package symfony-dropzone

Symfony Dropzone Bundle

Latest Version on Packagist

Seamless integration of Dropzone.js into Symfony Forms with automatic entity relationship management for drag-and-drop file uploads.

ES

Features

Requirements

Installation

Step 1: Install via Composer

The bundle registers automatically with Symfony Flex. If you're not using Flex, add to config/bundles.php:

Step 2: Include Dropzone.js

Add the following to your base template (e.g., base.html.twig):

That's it! You're ready to use DropzoneType in your forms.

Quick Start

1. Define Your File Entity

2. Define Your Main Entity with Relationship

3. Create a Form Type

4. Create Upload/Remove Handlers

5. Use the Form in Your Template

That's it! The bundle handles everything:

Configuration Options

Option Type Default Description
class string null Required. Entity class for file/attachment objects
multiple bool true Enable multiple file mode; set false for single file (ManyToOne)
maxFiles int 1 Maximum number of files allowed in the dropzone
uploadHandler string null Required. Symfony route name for file upload endpoint
removeHandler string null Required. Symfony route name for file removal endpoint
uploadHandlerMethod string "POST" HTTP method for upload requests
removeHandlerMethod string "DELETE" HTTP method for remove requests
choice_src string "src" Entity property name containing file URL/path (getter method: get{PropertyName}())
acceptedFiles string null MIME types accepted (e.g., "image/*,.pdf")
addRemoveLinks bool true Show "Remove" link on file previews
headers array [] Custom HTTP headers sent with requests (e.g., ['Authorization' => 'Bearer TOKEN'])
formData array [] Additional form data sent with upload request
withCredentials int 0 XHR withCredentials setting (0 or 1)
thumbnailWidth int 120 Width of preview thumbnails in pixels
thumbnailHeight int 120 Height of preview thumbnails in pixels
thumbnailMethod string "crop" Thumbnail scaling: "crop" or "contain"
resizeWidth int null Client-side resize width before upload (preserves aspect ratio if only one set)
resizeHeight int null Client-side resize height before upload
resizeMimeType string null Output MIME type after resize (e.g., "image/jpeg")
resizeMethod string "contain" Resize scaling: "crop" or "contain"
filesizeBase int 1024 Base unit for filesize calculations
ignoreHiddenFiles bool true Ignore hidden files in directories
autoProcessQueue bool true Auto-process upload queue on file addition
autoQueue bool true Auto-queue files when added to dropzone
previewsContainer string null CSS selector for custom preview container (e.g., "#my-previews")
required bool true Field is required for form validation

File Entity Requirements

Your file/attachment entity must implement:

Example minimal entity:

How It Works

Architecture Overview

  1. Form Type RegistrationDropzoneType extends Symfony's form system
  2. Hidden Fields — For multiple files: a CollectionType with hidden inputs; for single: an EntityType field
  3. Twig Template — Renders Dropzone.js widget with JavaScript configuration
  4. Upload Flow:
    • User drags files or clicks to select
    • Dropzone.js sends each file to your uploadHandler route via AJAX
    • Handler persists entity to database, returns {"id": <int>}
    • Bundle stores file ID in hidden form field
  5. Form Submission — Hidden field values are collected
  6. Data TransformationDropzoneTransformer converts IDs back to entity objects via Doctrine
  7. Persistence — Form submission handles OneToMany/ManyToOne relationships automatically

File Removal Flow

  1. User clicks "Remove" link on file preview
  2. Dropzone.js sends DELETE (or POST) to removeHandler route
  3. Handler deletes entity, returns {"id": <int>}
  4. Widget removes preview from DOM
  5. On next form submission, removed ID is not included, relationship is updated

Examples

Basic Multiple File Upload

Single File Upload (ManyToOne)

Image-Only with Custom Dimensions

With Custom Headers (API Authentication)

Custom Preview Container

With Custom Form Data

Your upload handler receives this in $request->request->all():

Upgrading from v1

If you're upgrading from the original emr-dev/symfony-dropzone:

Migration example:

The API and functionality remain the same.

Differences from symfony/ux-dropzone

Feature ethsam/symfony-dropzone symfony/ux-dropzone
Entity relationships Full OneToMany/ManyToOne support None; form values only
Data transformation Automatic ID → Entity Manual
Multiple files Built-in with CollectionType Not ideal
Edit mode pre-population Yes; shows existing files Manual templating
Upload handler Simple route + JSON response Requires UX component
File removal Built-in DELETE handler Manual
Dropzone config Full access to all options Limited
Learning curve Minimal; standard Symfony forms Moderate; UX paradigm
Maintenance Active Official but UX-focused

Summary: Use ethsam/symfony-dropzone for entity-driven file management; use symfony/ux-dropzone if you need tight Stimulus integration or prefer the UX paradigm.

Contributing

We welcome contributions! Please:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feat/your-feature
  3. Commit your changes: git commit -m "feat: add your feature"
  4. Push to the branch: git push origin feat/your-feature
  5. Open a Pull Request

For bug reports or feature requests, please open an issue.

License

This bundle is licensed under the MIT License. See LICENSE for details.

Originally forked from emr-dev/symfony-dropzone.

Credits


All versions of symfony-dropzone with dependencies

PHP Build Version
Package Version
Requires php Version >=8.1
symfony/dependency-injection Version ^5.4 || ^6.0 || ^7.0
symfony/form Version ^5.4 || ^6.0 || ^7.0
symfony/http-kernel Version ^5.4 || ^6.0 || ^7.0
symfony/config Version ^5.4 || ^6.0 || ^7.0
symfony/options-resolver Version ^5.4 || ^6.0 || ^7.0
symfony/twig-bundle Version ^5.4 || ^6.0 || ^7.0
doctrine/orm Version ^2.12 || ^3.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package ethsam/symfony-dropzone contains the following files

Loading the files please wait ...