The package provides a factory to help forming file download PSR-7 response.
- PHP 8.1 or higher.
The package could be installed with Composer:
composer require yiisoft/response-download
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
.
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.
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.