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

Laravel Local Temporary Upload Url Laravel Package

mnapoli/laravel-local-temporary-upload-url

Generate temporary signed URLs for direct file uploads to local or self-hosted Laravel disks, so clients can upload securely without exposing your storage. Handles URL creation, expiry, and validation.

View on GitHub
Deep Wiki
Context7

Getting Started

Start with the install and the package's own publishable assets — at 1.0.0 those are now the stable contract you'll live with:

composer require vendor/package:^1.0
php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider"
php artisan migrate

Where to look first, in order:

  1. composer.json — confirm the PHP and Laravel version constraints. A 1.0.0 tag usually means the maintainers have committed to semver, so ^1.0 is safe and patch/minor upgrades should be non-breaking.
  2. The service provider — this tells you what is registered, whether config/migrations/views are publishable, and which tags exist (config, migrations, assets). Publish selectively rather than everything.
  3. config/<package>.php — the single most useful file. Most day-to-day behaviour is toggled here, and it documents the extension points without reading source.
  4. The README's "Usage" and "Testing" sections — at a first stable release these are usually accurate; older blog posts may not be.

A good first use case is the package's simplest public entry point — typically a facade, a injected service class, or an Artisan command. Wire it into one controller or command, write a single feature test around it, and only then expand. That gives you a working integration and a regression test before you depend on it more widely.

Because this is the first stable release, treat it as the moment to lock the version and record why you adopted it. There is no upgrade path to reason about yet, which makes adoption cheap right now.

Implementation Patterns

Resolve from the container, not the facade. Prefer constructor injection of the package's service class in controllers, jobs, and listeners. Reserve facades for Blade templates, tinker sessions, and quick scripts. This keeps your classes testable and makes the dependency explicit.

Bind configuration in a dedicated config file. Read package settings from your own config/ file and pass them in, rather than scattering config('package.*') calls through the codebase. When the package's config keys change in a future minor, you have one place to update.

Wrap it behind a thin adapter for anything non-trivial. If the package is doing real work (payments, search, media, auth), define a small interface in your app and implement it with the package. Day-to-day you call your interface; the package stays swappable and mockable.

Use the package's testing helpers. Packages that ship fakes, factories, or InteractsWith* traits almost always expect them in tests. In tests/Pest.php or TestCase::setUp(), call the documented fake/reset method so state doesn't leak between tests.

Integrate through events where the package exposes them. Listen for the package's domain events instead of subclassing or monkey-patching. That is the extension point most likely to survive minor releases.

Run it in a queue where the package allows it. If there is a job or a "should queue" option, use it for anything touching external APIs. This is the difference between a fast request and a timeout in production.

Pin and review on a schedule. With ^1.0, run composer update vendor/package --with-dependencies deliberately, read the changelog, and run your integration test. Small, frequent upgrades beat a panic upgrade at 2.0.

Gotchas and Tips

  • Config caching bites first. After php artisan config:cache, env() calls inside the package config return null. Only reference env() in your own config files, and never at runtime.
  • Auto-discovery can be disabled. If the package "installs" but nothing happens, check bootstrap/providers.php (Laravel 11+) or config/app.php, and confirm you aren't running with dont-discover in composer.json.
  • Publishing overwrites. vendor:publish with --force will clobber your edited config or migrations. Publish once, then diff against the vendor copy when upgrading.
  • Migration ordering. Package migrations are timestamped at install time. If your app has an earlier migration that creates a table the package references, you'll get a foreign-key failure on a fresh database. Test migrate:fresh before deploying.
  • 1.0.0 is a promise, not a guarantee of feature completeness. Expect a burst of 1.0.x patch releases in the first weeks. Read those changelogs — patch releases can still fix behaviour you were relying on.
  • Facade mocking is subtle. Facade::shouldReceive() only works if the facade is resolved through the container in the code under test. Direct new calls bypass it and your test will hit the real implementation.
  • Octane and long-running workers. Static state and singletons in the package may persist across requests. If you see stale data under Octane or Horizon, look for a documented reset or register a terminating callback.
  • Debugging: log the resolved config (Log::debug(config('package'))) and check php artisan about for discovery status. Most "package doesn't work" reports are config, discovery, or a cached config file.
  • Extension points to prefer, in order: published config → package events → your own adapter class → subclassing. Subclassing vendor code is the last resort and the first thing to break on a minor release.

Adopt now, pin ^1.0, keep an integration test, and follow the changelog for the first few patch releases before you build anything large on top of it.

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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
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
cgv/localized-resource