39 lines
1.4 KiB
PHP
39 lines
1.4 KiB
PHP
<?php
|
||
//downloadfile.php?
|
||
if(isset($_GET['dwfile'])){
|
||
$dwfile = str_replace('..','',$_GET['dwfile']);
|
||
$dwfile = str_replace('/upload/','',$dwfile);
|
||
if(file_exists('./upload/'.$dwfile)){
|
||
$dwfile = './upload/'.$dwfile;
|
||
file_force_download($dwfile);
|
||
}else{
|
||
//echo '0';
|
||
}
|
||
}
|
||
|
||
function file_force_download($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));
|
||
// читаем файл и отправляем его пользователю
|
||
if ($fd = fopen($file, 'rb')) {
|
||
while (!feof($fd)) {
|
||
print fread($fd, 1024);
|
||
}
|
||
fclose($fd);
|
||
}
|
||
exit;
|
||
}
|
||
} |