makinacorpus/files
A Laravel package for attaching and managing files on Eloquent models, with polymorphic file associations, configurable storage disks, image handling, and helpers for uploading, retrieving, and cleaning up stored files.
Storage facade plus Flysystem already delivers the capability, is first-party, actively maintained, and MIT-licensed. The correct product call is do not add a dependency — use what the framework already ships. This package is a useful benchmark for confirming that file-API plumbing is commoditized, not a candidate to build on.Storage, or with spatie/laravel-medialibrary if media features are needed. Use this package as a spec sketch, not a dependency.Consider it only under a narrow, mostly disqualifying set of conditions:
Look elsewhere when:
Storage facade over Flysystem. Same conceptual API, zero new dependencies, first-party maintenance.spatie/laravel-medialibrary with intervention/image, both mature and permissively licensed.For executives: We evaluated makinacorpus/files as a potential file-handling dependency and recommend against adoption, for three reasons in order of weight. First, it is licensed GPL-2.0, which imposes copyleft obligations incompatible with our proprietary product and would require legal review that would likely preclude use. Second, it has no adoption signal — zero stars, zero dependent projects, and an apparent single maintainer — meaning no community, no security response channel, and real abandonment risk on a security-sensitive surface. Third, it is functionally redundant with file-handling already in our framework. Net: it adds legal risk and maintenance risk while adding no capability. Recommendation: close the evaluation and rely on the existing storage layer.
For engineering: No action required beyond closing the ticket. When a file-abstraction need surfaces, use Laravel's Storage facade over Flysystem — same concepts, already in the stack, maintained by the framework. Reach for spatie/laravel-medialibrary only for media-specific features (conversions, responsive images, collections). If we ever revisit a third-party file library, sequence it as: legal review of the license first (cheap gate that can terminate the evaluation), then a half-day senior source read of the public API and filesystem primitives, then a 2–3 day spike behind our own internal interface so the dependency is never referenced directly from controllers, jobs, or domain services — and default to the framework unless the spike proves a real advantage. The one durable takeaway from this evaluation is procedural: a 30-second check of license and dependent count before any dependency enters composer.json would have flagged this one immediately.
How can I help you explore Laravel packages today?