Загрузка файла с сервера на компьютер клиента

У меня есть папка в моем корневом каталоге называется files,
Эта папка содержит файлы в диапазоне от 1 Kb-1 GB,

Я хочу PHP-скрипт, который может просто загрузить файл асинхронно с использованием AJAX.

Этот код инициирует загрузку скриптов при нажатии на файл:

Jquery

$('.download').click(function(){
var src =$(this).attr('src');
$.post('download.php',{
src :  src //contains name of file
},function(data){
alert('Downloaded!');
});
});

PHP

<?php
$path = 'files/'.$_POST['src'];
//here the download script must go!
?>

Который был бы лучший, самый быстрый и безопасный способ скачать файл?

2

Решение

<?php
/**
* download.php
*/

if (!empty($_GET['file'])) {
// Security, down allow to pass ANY PATH in your server
$fileName = basename($_GET['file']);
} else {
return;
}

$filePath = '???/files/' . $fileName;
if (!file_exists($filePath)) {
return;
}

header("Content-disposition: attachment; filename=" . $fileName);
header("Content-type: application/pdf");
readfile($filePath);

А на самом деле AJAX-запрос не нужен, при использовании Content-disposition: attachment:

<a href="download.php?file=file1.pdf">File1</a>
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector