相关疑难解决方法(0)

Symfony2 - 强制文件下载

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

在控制器中:

    $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;
Run Code Online (Sandbox Code Playgroud)

这是打开保存文件的对话框,但它说文件是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;
Run Code Online (Sandbox Code Playgroud)

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

最后,将"setContent"行切换为:

    $response->setContent(file_get_contents($filename));
Run Code Online (Sandbox Code Playgroud)

它返回一个PHP错误:

致命错误:允许的内存大小......

关于如何实现这一点的任何线索?我之前在PHP中做过(没有MVC),但我不知道通过Symfony2做什么可能会遗漏...

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

php header download symfony

53
推荐指数
6
解决办法
7万
查看次数

标签 统计

download ×1

header ×1

php ×1

symfony ×1