У меня есть папка в моем корневом каталоге называется 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!
?>
Который был бы лучший, самый быстрый и безопасный способ скачать файл?
<?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>
Других решений пока нет …