Download the PHP package aditkuma/laravel-bulk-upload without Composer

On this page you can find all versions of the php package aditkuma/laravel-bulk-upload. 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 laravel-bulk-upload

aditkuma/laravel-bulk-upload

Queue-backed bulk CSV/Excel upload pipeline for Laravel 9 - any columns, any row count - with a live processed/failed/in-progress/remaining progress dashboard. Pairs with the Angular component (@aditkuma/ngx-bulk-upload), but the four REST endpoints work with any frontend.

How it works

  1. POST /api/uploads stores the file and dispatches AnalyzeUploadJob, returning a uuid immediately - the HTTP request never waits on parsing.
  2. AnalyzeUploadJob streams just the header row and a row count (PhpSpreadsheet's listWorksheetInfo + a read-filtered load()), then splits the data rows into fixed-size chunks and dispatches them as a Bus::batch of ProcessUploadChunkJob.
  3. Each ProcessUploadChunkJob reads only its own row window (bounded memory regardless of file size), validates rows, and atomically updates the parent Upload's counters - safe under many concurrent queue workers.
  4. FinalizeUploadJob runs once, right after the batch finishes, setting the final status.
  5. Every chunk (and the final job) broadcasts on the public channel upload.{uuid} - if you don't configure a broadcaster, this fails silently (see SafeBroadcaster) and polling GET /api/uploads/{uuid} still works.

Row-level validation is behind the RowProcessor interface (default: GenericRowProcessor, which only rejects entirely-blank rows, plus a CSV/TXT-only ragged-column check inside ProcessUploadChunkJob - a sparsely filled Excel row is normal and is never flagged). Bind your own RowProcessor to add domain-specific processing (e.g. inserting into your own tables) without touching the upload pipeline itself:

Install

The service provider is auto-discovered. Then:

Requirements

Configuration

config/bulk-upload.php (env vars in parens):

Key Default Purpose
chunk_size (BULK_UPLOAD_CHUNK_SIZE) 500 Rows per queued job
max_file_size_kb (BULK_UPLOAD_MAX_FILE_SIZE_KB) 512000 Server-side upload size limit
allowed_extensions csv,txt,xls,xlsx Accepted file types
disk (BULK_UPLOAD_DISK) local Filesystem disk (from config/filesystems.php) for stored source files
register_routes (BULK_UPLOAD_REGISTER_ROUTES) true Set false to wire up UploadController yourself
route_prefix (BULK_UPLOAD_ROUTE_PREFIX) api Prefix for the package's routes

Routes

Broadcasting

If BROADCAST_DRIVER=pusher is configured (pointed at Soketi or Pusher Cloud), UploadProgressUpdated broadcasts on public channel upload.{uuid} with event name progress.updated, payload matching the polling endpoint's JSON shape.

Development

There's no bundled test Laravel app in this repo - point a real app's composer.json at this directory with a local path repository to iterate against it.


All versions of laravel-bulk-upload with dependencies

PHP Build Version
Package Version
Requires php Version ^8.1
illuminate/support Version ^9.0
illuminate/database Version ^9.0
illuminate/queue Version ^9.0
illuminate/broadcasting Version ^9.0
illuminate/http Version ^9.0
phpoffice/phpspreadsheet Version ^1.29 || ^2.0 || ^5.0
pusher/pusher-php-server Version ^6.0 || ^7.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 aditkuma/laravel-bulk-upload contains the following files

Loading the files please wait ...