这是我的代码:
error_log('download start');
readfile('setup.exe');
error_log('download complete');
该文件已成功接收,但第三行未执行,它没有记录“下载完成”我们长期以来一直面临这个问题,我们也尝试发送该文件的块(使用刷新),并且在几个块之后连接丢失所以其余可执行代码未运行(但已收到文件)。我们知道通过在 php.ini 中使用连接处理会丢失连接。我们还将连接时间限制设置为最大。
您需要先设置某些标题binary
,等等:
$file = 'setup.exe';
if (file_exists($file)) {
error_log('download start');
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
$result = readfile($file);
if ($result) {
error_log('download complete');
}
else {
error_log('unable to download');
}
exit;
}