PHPackages                             ondrs/upload-manager - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. ondrs/upload-manager

ActiveLibrary[File &amp; Storage](/categories/file-storage)

ondrs/upload-manager
====================

Upload manager for Nette framework

v8.0(4y ago)513.2k6[1 issues](https://github.com/ondrs/upload-manager/issues)[1 PRs](https://github.com/ondrs/upload-manager/pulls)MITPHPPHP &gt;=7.1

Since Feb 28Pushed 4y ago1 watchersCompare

[ Source](https://github.com/ondrs/upload-manager)[ Packagist](https://packagist.org/packages/ondrs/upload-manager)[ Docs](http://ondraplsek.cz)[ RSS](/packages/ondrs-upload-manager/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (4)Dependencies (8)Versions (22)Used By (0)

Upload Manager
==============

[](#upload-manager)

[![Total Downloads](https://camo.githubusercontent.com/a0e6fe68b3f1a2e405bb7163b9a0bee22a5845c1150633faf92a0bfd2013387d/68747470733a2f2f706f7365722e707567782e6f72672f6f6e6472732f75706c6f61642d6d616e616765722f646f776e6c6f616473)](https://packagist.org/packages/ondrs/upload-manager)[![CircleCI](https://camo.githubusercontent.com/0910587429d67f549296954555234c47de30f8bbb1a76ffd5a7af365efac5d3a/68747470733a2f2f636972636c6563692e636f6d2f67682f6f6e6472732f75706c6f61642d6d616e616765722f747265652f6d61737465722e7376673f7374796c653d737667)](https://circleci.com/gh/ondrs/upload-manager/tree/master)[![Latest Stable Version](https://camo.githubusercontent.com/b5ef7311230dc00af9d5deb3358cde1726836329488fae63830363c8bb1a80ee/68747470733a2f2f706f7365722e707567782e6f72672f6f6e6472732f75706c6f61642d6d616e616765722f762f737461626c65)](https://packagist.org/packages/ondrs/upload-manager)

Upload manager for Nette framework

Installation
------------

[](#installation)

composer.json

```
"ondrs/upload-manager": "v8.0.0"

```

Configuration
-------------

[](#configuration)

Register the extension:

```
extensions:
    uploadManager: ondrs\UploadManager\DI\Extension
```

Minimal configuration:

```
uploadManager:
    relativePath: '/uploads'
```

Full configuration:

```
uploadManager:
    basePath: %wwwDir%
    relativePath: '/uploads'
    fileManager:
        blacklist: {php}
    imageManager:
        maxSize: 1280
        type: jpg
        quality: 80
        saveOriginal: FALSE
        dimensions:
            800:
                - {800, NULL}
                - shrink_only
            500:
                - {500, NULL}
                - shrink_only
            250:
                - {250, NULL}
                - shrink_only
            thumb:
                - {100, NULL}
                - shrink_only
```

In most cases you want to choose the `wwwDir` as your `basePath` (and it is chosen by default) to make your files publicly accessible. `relativePath` is relative to the `basePath`, so complete path where your files will be uploaded looks like this

```
{basePath}/{relativePath}[/{dir}]

```

`dir` is an optional parameter and you can set it during the runtime of your script in the `listen()` or in the `upload()` method.

**fileManager:**

- blacklist
    - array of files extensions which are blacklisted, php is by default

**imageManager**

- maxSize

    - maximum size of an image, if its bigger, it will be automatically resized to this size
    - can be number X coord of an imahe
    - or array \[X, Y\]
- dimensions

    - array of dimensions to which an image will be resized
    - format is

        ```
        PREFIX:
            - {X_SIZE, Y_SIZE}
            - RESIZE_OPTION
        ```
    - `PREFIX` can be whatever you want, it will be added to a resized file: `PREFIX_file.jpg`
    - `Y_SIZE` is optional as well as `RESIZE_OPTION`
    - `RESIZE_OPTION` is set to `Image::SHRINK_ONLY` by default

For example we will set the UploadManager according to the full configuration which is written above.

```
$this->upload->filesToDir('dir/path')

```

Uploading an image file `foo.jpg` with size (1680 x 1050) will result in creation of 5 files: `foo.jpg, 800_foo.jpg, 500_.jpg, 250_foo.jpg, thumb_foo.jpg`which will be saved in the `%wwwDir%/uploads/super/dir`All files are resized proportionally according to their X dimension and saved with a corresponding prefix. File foo.jpg is considered to be an original but it's resized to 1280px.

Usage
-----

[](#usage)

Inject `ondrs\UploadManager\Upload` into your presenter or wherever you want

```
/** @var \ondrs\UploadManager\Upload @inject
public $upload;
```

And do an upload.

```
public function renderUpload()
{
    $this->upload->filesToDir('path/to/dir');
}
```

If you want to upload just a single file (for example with a form) call the `singleFileToDir()` method

```
public function processForm($form)
{
    /** @var Nette\Http\FileUpload */
    $fileUpload = $form->values->file;

    $this->upload->singleFileToDir('path/to/dir', $fileUpload);
}
```

Events
------

[](#events)

The real fun comes up with an events. They are here to help you to control and monitor your upload process with an ease.

- onQueueBegin

    - called before the upload starts
    - accept one argument
        1. array of Nette\\Http\\FileUpload objects which *will be uploaded*
- onQueueComplete

    - called when the upload finish
    - accept two arguments
        1. array of Nette\\Http\\FileUpload
        2. array of \\SplFileInfo objects which *were uploaded*
- onFileBegin

    - called before the upload of *each file*
    - accept two arguments
        1. Nette\\Http\\FileUpload
        2. dir which is constructed as `{relativePath}[/{dir}]`
- onFileComplete

    - called after the upload complete of *each file*
    - accept three arguments
        1. Nette\\Http\\FileUpload object of the *original file*
        2. \\SplFileInfo object of the *uploaded file*
        3. dir which is constructed as `{relativePath}[/{dir}]`

Real world example
------------------

[](#real-world-example)

```
/**
 * @param int $eventId
 */
public function uploadAttachment($eventId)
{
    /**
     * @param FileUpload $fileUpload
     * @param \SplFileInfo $uploadedFile
     * @param $path
     */
    $this->upload->onFileComplete[] = function (\SplFileInfo $uploadedFile, FileUpload $fileUpload, $path) use ($eventId) {

        $filename = $uploadedFile->getFilename();

        $this->db->table('crm_attachments')
            ->insert([
                'filename' => $filename,
                'path' => $path,
                'crm_events_id' => $eventId,
            ]);
    };

    /**
     * @param array $files
     * @param array $uploadedFiles
     */
    $this->upload->onQueueComplete[] = function(array $files, array $uploadedFiles) use($eventId) {

        $uploadedFiles = array_map(function($i) {
            return $i->getFilename();
        }, $uploadedFiles);

        $this->db->table('crm_events')
            ->wherePrimary($eventId)
            ->update([
                'text' => implode(';', $uploadedFiles),
            ]);
    };

    $this->upload->filesToDir('attachments/' . $eventId);
}
```

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance16

Infrequent updates — may be unmaintained

Popularity30

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 91.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~129 days

Recently: every ~404 days

Total

20

Last Release

1674d ago

Major Versions

v0.5.0 → v6.0.02017-06-21

v0.6.2 → v6.0.22017-06-21

v0.7 → v7.0.02018-04-27

v7.0.0 → v8.02021-11-22

PHP version history (3 changes)v0.1PHP &gt;=5.4.0

v0.4.0PHP &gt;=5.6.0

v8.0PHP &gt;=7.1

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/828362?v=4)[Ondřej Plšek](/maintainers/ondrs)[@ondrs](https://github.com/ondrs)

---

Top Contributors

[![ondrs](https://avatars.githubusercontent.com/u/828362?v=4)](https://github.com/ondrs "ondrs (114 commits)")[![marten-cz](https://avatars.githubusercontent.com/u/582397?v=4)](https://github.com/marten-cz "marten-cz (4 commits)")[![Zemistr](https://avatars.githubusercontent.com/u/2613208?v=4)](https://github.com/Zemistr "Zemistr (2 commits)")[![tsusanka](https://avatars.githubusercontent.com/u/1835345?v=4)](https://github.com/tsusanka "tsusanka (1 commits)")[![ondrakub](https://avatars.githubusercontent.com/u/137948?v=4)](https://github.com/ondrakub "ondrakub (1 commits)")[![f3l1x](https://avatars.githubusercontent.com/u/538058?v=4)](https://github.com/f3l1x "f3l1x (1 commits)")[![Cyllenea](https://avatars.githubusercontent.com/u/45451728?v=4)](https://github.com/Cyllenea "Cyllenea (1 commits)")

---

Tags

netteuploadfile-upload

### Embed Badge

![Health badge](/badges/ondrs-upload-manager/health.svg)

```
[![Health](https://phpackages.com/badges/ondrs-upload-manager/health.svg)](https://phpackages.com/packages/ondrs-upload-manager)
```

###  Alternatives

[aws/aws-sdk-php

AWS SDK for PHP - Use Amazon Web Services in your PHP project

6.2k532.1M2.5k](/packages/aws-aws-sdk-php)[contributte/translation

Symfony/Translation integration for Nette Framework.

771.8M49](/packages/contributte-translation)[contributte/image-storage

Image storage for Nette framework

28750.1k1](/packages/contributte-image-storage)[fof/upload

The file upload extension for the Flarum forum with insane intelligence.

190185.4k17](/packages/fof-upload)[ublaboo/image-storage

Image storage for Nette framework

2813.7k](/packages/ublaboo-image-storage)[eslazarev/wildberries-sdk

Wildberries OpenAPI clients (generated).

232.5k](/packages/eslazarev-wildberries-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
