yiisoft / response-download
The package provides a factory to help forming file download PSR-7 response.
Fund package maintenance!
Opencollective
yiisoft
Installs: 2 272
Dependents: 1
Suggesters: 0
Security: 0
Stars: 10
Watchers: 14
Forks: 3
Open Issues: 2
Requires
- php: ^8.1
- ext-fileinfo: *
- psr/http-factory: ^1.0
- psr/http-message: ^1.0
- yiisoft/http: ^1.2
Requires (Dev)
- httpsoft/http-message: ^1.0
- maglnet/composer-require-checker: ^4.3
- phpunit/phpunit: ^9.5
- rector/rector: ^0.15.19
- roave/infection-static-analysis-plugin: ^1.16
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^5.8
This package is auto-updated.
Last update: 2024-12-13 07:34:21 UTC
README
Yii PSR-7 Download Response Factory
The package provides a factory to help forming file download PSR-7 response.
Requirements
- PHP 8.1 or higher.
Installation
The package could be installed with Composer:
composer require yiisoft/response-download
General usage
Use the factory to form a response:
use Psr\Http\Message\ResponseInterface; use Yiisoft\ResponseDownload\DownloadResponseFactory; final class MyController { public function __construct( private readonly DownloadResponseFactory $downloadResponseFactory, ) { } public function sendMyContentAsFile(): ResponseInterface { return $this->downloadResponseFactory->sendContentAsFile('Hello!', 'message.txt'); } public function sendMyFile(): ResponseInterface { return $this->downloadResponseFactory->sendFile('message.txt'); } public function xSendMyFile(): ResponseInterface { return $this->downloadResponseFactory->xSendFile('message.txt'); } public function sendMyStreamAsFile(): ResponseInterface { $stream = new MyStream(); return $this->downloadResponseFactory->sendStreamAsFile($stream, 'message.txt'); } }
Note the xSendFile()
. It is a special method that delegates the hard work to the web server instead of serving the
file using PHP.
Optional arguments and defaults:
- If attachment name is not specified in
sendFile()
orxSendFile()
, it will be taken from the name of the file - served.
- Each file sending method could also be provided with optional mime type and optional content disposition.
- If mime type is omitted, for
sendFile()
andxSendFile()
it will be determined based on the file content. For other methods or when unable to determine the mime type, "application/octet-stream" will be used. - Content disposition is "attachment" by default. It will trigger browser's download dialog. If you want the content
of the file to be displayed inline, set it to
Yiisoft\Http\ContentDispositionHeader\ContentDispositionHeader::INLINE
.
Documentation
If you need help or have a question, the Yii Forum is a good place for that. You may also check out other Yii Community Resources.
License
The Yii PSR-7 Download Response Factory is free software. It is released under the terms of the BSD License.
Please see LICENSE
for more information.
Maintained by Yii Software.