我试图下载在我的数据库中存储为blob的文件。为此,我有一个PHP脚本,基本上是:
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
//application/pdf
header("Content-Type: ". $file_type);
//integer
header("Content-Length: " . $file_size);
//urlencode to avoid problem with locale special characters
header('Content-Disposition: attachment; filename="'.urlencode($novo_nome).'"');
header("Content-Transfer-Encoding: binary\n");
//the file binary content
print($file_stream);
使用此脚本将导致Firefox / IE上的下载失败。在Chrome中,下载工作正常。我的一个同事在最后一行之后添加了一个虚拟回声:
echo "f";
添加此回显后,下载开始在Firefox / IE上运行。我认为$ file_size可能是错误的,并尝试将$file_size-1
发送到标头函数而不是添加回声,但这并不起作用。
任何人都有任何关于为什么这个回声的东西有效的线索,以及什么是正确的解决方案?