gpt4 book ai didi

php - Symfony2 - 强制文件下载

转载 作者:IT王子 更新时间:2023-10-29 00:39:11 26 4
gpt4 key购买 nike

当用户点击下载链接时,我正在尝试下载文件。

在 Controller 中:

    $response = new Response();
$response->headers->set('Content-type', 'application/octect-stream');
$response->headers->set('Content-Disposition', sprintf('attachment; filename="%s"', $filename));
$response->headers->set('Content-Length', filesize($filename));

return $response;

这是打开保存文件的对话框,但它说文件是 0 字节。并将其更改为:

        $response = new Response();
$response->headers->set('Content-type', 'application/octect-stream');
$response->headers->set('Content-Disposition', sprintf('attachment; filename="%s"', $filename));
$response->headers->set('Content-Length', filesize($filename));
$response->headers->set('Content-Transfer-Encoding', 'binary');
$response->setContent(readfile($filename));

return $response;

我得到一堆奇怪的字符而不是文件下载对话框。

最后,将“setContent”行切换为:

    $response->setContent(file_get_contents($filename));

它返回一个 PHP 错误:

Fatal error: Allowed memory size...

关于如何实现这一点的任何线索?我以前在 PHP 中做过(没有 MVC),但我不知道通过 Symfony2 做这件事会缺少什么......

也许解决方案是在 PHP.INI 中设置 memory_limit,但我想这不是最佳做法...

最佳答案

最舒服的解决方案是

use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;

$response = new BinaryFileResponse($file);
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT);

return $response;

关于php - Symfony2 - 强制文件下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13010411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com