Я запускаю следующий код для загрузки файла на заднем плане, а не просто перенаправления на файл в браузере, но я не могу нажимать на что-либо еще на странице, пока не будет загружен весь файл. Что-нибудь, что я могу изменить в коде, чтобы это исправить?
При нажатии на ссылку это загружается в отдельный php-файл, поэтому пользователь не видит, куда файл извлекается из ($ filepath), а также защищен сеансом:
header("Cache-control: private"); header("Content-Type: application/octet-stream"); if ($download) { header("Content-Disposition: attachment; filename=\"" . $title . "\""); header('Content-Transfer-Encoding: binary'); } else { header("Content-Disposition: inline; filename=\"" . $title . "\""); } // Disable caching header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1. header('Pragma: no-cache'); // HTTP 1.0. header('Expires: 0'); // Proxies. readfile($filepath);
Правка // Я до сих пор не смог понять это. Теперь я пытаюсь использовать этот код AJAX, но он по-прежнему блокирует всю страницу, пока файл не будет полностью загружен, и он загружается только в фоновом режиме, а не в жесткий диск.
$('.download').on('click', function(e) { e.preventDefault(); var self = $(this); $.ajax({ type: 'POST', url: self.attr('href'), async: true, success : function(response) { } }) });