Я загружаю файл со следующим кодом:
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $new_filename . '"');
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $size);readfile($download_url);
exit;
где $download_url
путь к файлу Файл загружается идеально, но я не могу загрузить следующий файл на той же странице, пока загружается первая, или даже переходить на другие страницы, пока загрузка не будет завершена или отменена.
Нашел ответ Вот. Мне пришлось закрыть сессию перед выводом файла.
session_write_close();
readfile($download_url);
Сеанс может быть открыт только одним процессом PHP одновременно, и любые другие запросы, которые выдают команду session_start (), будут блокироваться во время ожидания доступа к файлу данных сеанса.
Я пробовал под Wamp, и у него были некоторые проблемы.
После долгих поисков я получил этот рабочий код
$file = 'test.jpg';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}