PHPackages                             pekhota/nova-multifile - 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. pekhota/nova-multifile

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

pekhota/nova-multifile
======================

Nova MultiFile – a multiple file upload field for Laravel Nova actions

v1.0.3(3w ago)00MITVuePHP ^8.2CI passing

Since May 7Pushed 3w agoCompare

[ Source](https://github.com/pekhota/nova-multifile)[ Packagist](https://packagist.org/packages/pekhota/nova-multifile)[ RSS](/packages/pekhota-nova-multifile/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (4)Versions (5)Used By (0)

Nova MultiFile
==============

[](#nova-multifile)

A Laravel Nova field that lets Nova **actions** accept multiple file uploads with drag-and-drop support.

Features
--------

[](#features)

- Drag-and-drop or click-to-browse dropzone
- Displays selected files with name, size, and individual remove buttons
- `accept()` — restrict to specific MIME types or extensions (passed to ``)
- `maxFiles()` — cap the number of selectable files
- PHP `handle()` receives a typed `UploadedFile[]` array directly via `$fields->attribute`

Requirements
------------

[](#requirements)

- PHP ^8.2
- Laravel ^10 | ^11 | ^12 | ^13
- Laravel Nova ^5

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

[](#installation)

```
composer require pekhota/nova-multifile
```

> **Note:** Nova is distributed through a private Composer repository. Make sure your project already has `https://nova.laravel.com` configured in `composer.json` and valid credentials.

Usage
-----

[](#usage)

### Defining the field in an action

[](#defining-the-field-in-an-action)

> **Important:** Nova serializes action field values into its action event log. Because `UploadedFile` objects cannot be serialized, you **must** add `public $withoutActionEvents = true;`to any action that uses this field.

```
use Pekhota\NovaMultiFile\MultiFile;

class ImportDocuments extends Action
{
    public $withoutActionEvents = true;

    public function fields(NovaRequest $request): array
    {
        return [
            MultiFile::make('Documents')
                ->accept(['.pdf', '.docx', '.xlsx'])
                ->maxFiles(10)
                ->help('Upload up to 10 documents.'),
        ];
    }

    public function handle(ActionFields $fields, Collection $models): mixed
    {
        /** @var \Illuminate\Http\UploadedFile[] $files */
        $files = $fields->get('documents'); // always an array, or null if nothing uploaded

        if (empty($files)) {
            return Action::danger('No files were uploaded.');
        }

        foreach ($files as $file) {
            $path = $file->store('documents', 'local');
            // … further processing
        }

        return Action::message(sprintf('Imported %d file(s).', count($files)));
    }
}
```

### API

[](#api)

MethodDescription`accept(string|array $types)`Comma-separated or array of extensions / MIME types (`'.pdf'`, `'image/*'`)`maxFiles(int $max)`Maximum number of files the user can select### How the PHP side receives files

[](#how-the-php-side-receives-files)

The Vue component appends each file to `FormData` as `attribute[]`. The field's `fillAttributeFromRequest` override reads `$request->file('attribute')` and writes a normalised `UploadedFile[]` to `$fields->attribute`.

```
// In your action's handle():
$files = $fields->get('documents'); // UploadedFile[] or null
```

Building from source
--------------------

[](#building-from-source)

```
cd nova-multifile
composer install       # installs nova-devtool into vendor/
npm install
npm run prod           # writes compiled assets to dist/
```

Or use the convenience script from the parent project:

```
npm run build-nova-multifile-prod
```

Changelog
---------

[](#changelog)

See [CHANGELOG.md](CHANGELOG.md).

License
-------

[](#license)

MIT — see [LICENSE](LICENSE).

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance94

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

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 ~2 days

Total

4

Last Release

27d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/fc38926e21beb3b1a46fdb78ecdf10d63e337d4bc64093bc82205cd9a59374c5?d=identicon)[pekhota](/maintainers/pekhota)

---

Tags

laravelfileuploadnovamultifile

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/pekhota-nova-multifile/health.svg)

```
[![Health](https://phpackages.com/badges/pekhota-nova-multifile/health.svg)](https://phpackages.com/packages/pekhota-nova-multifile)
```

###  Alternatives

[digital-creative/nova-filepond

A Nova field for uploading File, Image and Video using filepond.

5570.0k1](/packages/digital-creative-nova-filepond)[oneduo/nova-file-manager

A handy file manager tool for Laravel Nova

158399.9k2](/packages/oneduo-nova-file-manager)[czim/laravel-paperclip

Laravel Eloquent file attachment solution

80833.2k6](/packages/czim-laravel-paperclip)[bbs-lab/nova-file-manager

A handy file manager tool for Laravel Nova

1588.1k](/packages/bbs-lab-nova-file-manager)[ahmedkandel/nova-s3-multipart-upload

A Laravel Nova s3 multipart upload tool.

2549.3k](/packages/ahmedkandel-nova-s3-multipart-upload)[itskodinger/midia

Simple Media manager for your Laravel project

1416.0k](/packages/itskodinger-midia)

PHPackages © 2026

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