konratnox
8/11/2017 - 10:40 AM

Функция скачивания файла Просто отправляем на урл с обработчиком, передавая ссылку на файл

Функция скачивания файла Просто отправляем на урл с обработчиком, передавая ссылку на файл

$('.donwload-file').click(function(event) {
    event.preventDefault();

    var $that = $(this),
        url = '/ajax/download.php?file=' + $that.attr('href');

    window.location.href = url;

});
if(isset($_GET['file'])) {

    file_force_download($_GET['file']);

}

function file_force_download($file) {

    $file = $_SERVER['DOCUMENT_ROOT'].$file;
    if (file_exists($file)) {

        // сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт
        // если этого не сделать файл будет читаться в память полностью!
        if (ob_get_level()) {
            ob_end_clean();
        }
        // заставляем браузер показать окно сохранения файла
        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));
        // читаем файл и отправляем его пользователю
        readfile($file);
        exit;
    }
}