1

这是我的代码:

error_log('download start');
readfile('setup.exe');
error_log('download complete');

该文件已成功接收,但第三行执行,它没有记录“下载完成”我们长期以来一直面临这个问题,我们也尝试发送该文件的块(使用刷新),并且在几个块之后连接丢失所以其余可执行代码未运行(但已收到文件)。我们知道通过在 php.ini 中使用连接处理会丢失连接。我们还将连接时间限制设置为最大。

4

1 回答 1

0

您需要先设置某些标题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;
}
于 2012-06-12T08:48:10.537 回答