TWIG渲染页面如何return Content-Length header?
How to return Content-Length header for TWIG rendered page?
我正在渲染 TWIG 模板以生成要下载的 CSV 文件。为了显示下载进度条,服务器必须 return Content-Length header。
我尝试将 TWIG 模板渲染到一个变量中,计算该字符串的长度,然后在回显渲染模板之前立即输出 content-length header:
$output = $twig->render(...);
header('Content-Length', strlen($output));
echo $output;
但这会引发服务器 500 错误并显示消息 "malformed header from script 'index.php': Bad header: Content-Length"。
我是不是漏掉了什么?看来这应该是微不足道的。
传递给 header()
的第一个参数应该是完整的 header 字符串。我猜您希望 header 函数像 header(field name,field value)
一样接受第一个和第二个参数,但事实并非如此。您应该将 headers 作为单个字符串,如下所示:
// something like 'Content length: 1234'
header('Content-Length: ' . strlen($output));
我正在渲染 TWIG 模板以生成要下载的 CSV 文件。为了显示下载进度条,服务器必须 return Content-Length header。
我尝试将 TWIG 模板渲染到一个变量中,计算该字符串的长度,然后在回显渲染模板之前立即输出 content-length header:
$output = $twig->render(...);
header('Content-Length', strlen($output));
echo $output;
但这会引发服务器 500 错误并显示消息 "malformed header from script 'index.php': Bad header: Content-Length"。
我是不是漏掉了什么?看来这应该是微不足道的。
传递给 header()
的第一个参数应该是完整的 header 字符串。我猜您希望 header 函数像 header(field name,field value)
一样接受第一个和第二个参数,但事实并非如此。您应该将 headers 作为单个字符串,如下所示:
// something like 'Content length: 1234'
header('Content-Length: ' . strlen($output));