- How do I install liz/flysystem-qiniu in a Laravel app?
- Install it with composer require liz/flysystem-qiniu, then register a custom filesystem driver with Storage::extend in a service provider and reference it from config/filesystems.php with your bucket, access key, secret key, and bound domain. The package is a thin wrapper around qiniu/php-sdk, so the Qiniu SDK comes along as a dependency. Check the composer.json constraints before installing, because the last release dates to January 2021 and may not resolve on modern Laravel.
- Does liz/flysystem-qiniu support Laravel 9, 10, or 11?
- Not without modification. The last release predates the Flysystem 3 rewrite, and Laravel 9 and later pin league/flysystem ^3, so Composer will either hard-conflict or force you to downgrade the framework. Use it as-is only on older Laravel versions, or fork it and port the adapter class to Flysystem 3's FilesystemAdapter contract.
- Which Flysystem version does this Qiniu adapter target?
- Almost certainly Flysystem 1, possibly partial Flysystem 2, given the January 2021 release date. Flysystem 1 to 2 to 3 was a breaking rewrite involving AdapterInterface becoming FilesystemAdapter, typed Config and Visibility objects, and changed DirectoryListing return types. Read the league/flysystem constraint in composer.json to confirm before adopting it.
- How do I configure a Qiniu disk in config/filesystems.php?
- Add a disk entry using your custom driver name, with keys for the bucket, access key, secret key, and the CDN or bound domain used for URL generation. Because Laravel has no built-in Qiniu driver, you must also register the driver in a service provider via Storage::extend before the disk can resolve. After that, application code can use the Storage facade normally.
- Does it support private Qiniu buckets with expiring download URLs?
- Probably not out of the box. The adapter is a thin pass-through to qiniu/php-sdk, and signed private-bucket URLs are not part of the classic Flysystem adapter contract, so url() most likely returns public domain URLs only. If you need expiring links, plan to add privateDownloadUrl handling yourself and test it against a private bucket.
- How does listContents handle Qiniu Kodo pagination?
- Qiniu Kodo has no real directories, only key prefixes, and its listing API is paginated and truncated. Hand-rolled Qiniu adapters frequently return just the first page, which silently truncates results for large buckets. Verify that the adapter loops on the list marker until complete and honors the deep flag, and patch it with tests if it does not.
- Is liz/flysystem-qiniu actively maintained and safe for production?
- Treat it as sample code rather than a dependable dependency. The repository has around 4 stars, zero dependents, no release in over four years, and no visible test suite, so there is no security patching or compatibility work. The repo owner also does not match the liz/ vendor namespace, which suggests a republished personal fork, so verify the license and upstream attribution before any commercial use.
- What are the best alternatives to liz/flysystem-qiniu for Qiniu storage in Laravel?
- The preferred route is Qiniu's S3-compatible Kodo interface with league/flysystem-aws-s3-v3, a first-party-maintained adapter, provided a spike confirms it covers put, get, delete, list, and presigned URLs. If you need Qiniu-specific features such as fop image processing or private-bucket token URLs, fork this adapter, port it to Flysystem 3, and maintain it in-house with contract tests. Keep application code against the Storage facade so the backend stays swappable.
- How are large or multipart uploads handled by this Qiniu adapter?
- Uploads are delegated to qiniu/php-sdk, which supports multipart and resumable transfers through its own APIs. However, Flysystem's write and writeStream contract does not map cleanly onto Qiniu's per-request upload tokens, so transparent multipart behavior is not guaranteed. Test large and streamed uploads explicitly, and call the SDK directly if you need resumable transfers.
- Can I use Qiniu Kodo with league/flysystem-aws-s3-v3 instead?
- Qiniu exposes an S3-compatible interface for Kodo, so you can often point the AWS S3 Flysystem adapter at it and treat Qiniu as a commodity S3 target. Compatibility is partial, so run a verification spike covering put, get, delete, list, and presigned URLs before committing to it. If it passes, you get a maintained adapter with no custom code to own.