Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Uploadable Laravel Package

ozznest/uploadable

A Laravel package for attaching file uploads to Eloquent models. Handle validation, storage, and cleanup through a simple trait, keeping upload logic out of controllers and models.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

This package informs one narrow, low-leverage build vs. buy decision: how to wire file uploads to persistence entities. It is plumbing, not product surface, so it should not shape roadmap or feature prioritization.

  • Feature support it could underpin: entity-attached media (user avatars, CMS hero images, product photos, per-record document attachments) where a file's lifecycle must follow the record's lifecycle — uploaded on create, replaced on update, removed on delete.
  • Architectural decision it touches: whether upload handling lives in the domain entity layer (lifecycle callbacks) or in a dedicated service/queue. This package encodes the former, which is convenient for CRUD back-offices and awkward for APIs, async processing, or multi-store (S3/CDN) strategies.
  • Use cases where it is plausibly relevant: internal admin tooling, small back-office CRUD apps, prototypes where speed matters more than durability of the dependency.
  • Use cases where it is not relevant: anything customer-facing at scale, anything requiring virus scanning, image transformation pipelines, signed URLs, chunked/resumable uploads, or multi-tenant isolation.
  • Ecosystem caveat that changes the decision: despite the "Laravel/PHP package" framing, this is a Symfony bundle (UploadableBundle, Doctrine-oriented). For a Laravel codebase it is not a candidate at all — Laravel ships Illuminate\Http\UploadedFile plus the Storage facade, and a 40-line trait covers the same ground. Half the "buy" evaluation collapses on this alone.

When to Consider This Package

Adoption criteria — this package should clear all of them:

  1. You are on Symfony with Doctrine ORM. Non-negotiable; it is not a Laravel package and will not integrate with Eloquent.
  2. You want attribute/annotation-driven upload binding to entities and are deliberately choosing lifecycle-callback coupling over a service layer.
  3. You have read the source and are comfortable owning it. With 0 stars and 0 dependents there is no community to catch regressions, no Stack Overflow corpus, and no downstream signal that anyone has run this in production.
  4. You have verified release hygiene: tagged versions, a changelog, PHP/Symfony version constraints, and a CI badge that actually passes.
  5. You accept the security burden. Upload handling is a direct path for arbitrary file write, path traversal, MIME spoofing, and stored XSS. An unvetted dependency in that path is a liability you must audit yourself.

Look elsewhere when:

  • You need a maintained, battle-tested option. VichUploaderBundle is the de facto Symfony standard with orders of magnitude more adoption; OneupUploaderBundle covers chunked/async needs. In Laravel, use the framework's filesystem plus a small internal trait.
  • You need provenance signals. 0 stars / 0 dependents / score 0 means no evidence of production use. Treat it as sample code, not a dependency.
  • Uploads are commercially material — user-generated content, compliance-scoped documents, anything requiring audit trails or retention policy.
  • You want storage abstraction (S3, GCS, CDN) as a first-class concern rather than an afterthought.

How to Pitch It (Stakeholders)

To executives (30 seconds): We evaluated a small open-source component for handling file uploads attached to database records. It solves a real but commodity problem, and it has essentially no adoption — zero stars, zero dependent projects. The cost of adopting it (audit time, upgrade risk, security review of file-handling code we didn't write) exceeds the cost of building the equivalent internally in one to two days. Recommendation: do not adopt. This is not a strategic dependency and carries no roadmap implications.

To engineering: It's a Symfony/Doctrine bundle, not Laravel — verify before anyone spends time on it. The functionality is a lifecycle hook that maps an uploaded file onto an entity property, which we can replicate as a thin trait or a small upload service in an afternoon. If we later standardize on Symfony, VichUploaderBundle is the defensible choice; it has the install base and maintenance history this one lacks. Adding an unmaintained third-party package directly into our upload path — a known attack surface for path traversal and malicious file writes — is a risk we'd have to underwrite ourselves, and there's no community to share that burden with.

Decision requested: Approve the ~1–2 day internal build (or VichUploaderBundle if Symfony) and close out evaluation of ozznest/uploadable.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource