Как заставить тип файлов.txt можно скачать, [дубликат]
у Меня есть веб-страницы, но я не хочу, чтобы при нажатии на тип файла .txt скачать, а не просматривать их. Я разрабатываю эту страницу в PHP.
Видел несколько сценариев в ИНТЕРНЕТЕ, но он заставляет скачивание файлов .txt в это время он может по крайней мере нажал.
Следующий код, который я что делает:
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9"/>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
<title>FTP</title>
<link rel="stylesheet" href="css/style.css" />
</head>
<body>
<?php
if(isset($_GET['path']))
$dir = $_GET['path'];
else
$dir = '..'. DIRECTORY_SEPARATOR .'ftp';
foreach (new DirectoryIterator($dir) as $file) {
if (!$file->isDot()) {
if ($file->isDir()) {
echo '<div class="pastas">';
echo '<a href="index.php?path='.$dir. DIRECTORY_SEPARATOR .$file.'"><img src="icones/archive.ico" width="30px" height="30px"/></a>' . $file->getBaseName();
echo '</div>';
} else {
switch($file->getExtension()) {
case 'txt':
echo '<a href=""><img src="icones/text.ico" width="30px" height="30px" /></a>'.$file->getBaseName();
break;
case 'jpg':
echo '<a href=""><img src="icones/jpg.ico" width="30px" height="30px" /></a>'.$file->getBaseName();
break;
case 'gif':
echo '<a href=""><img src="icones/jpg.ico" width="30px" height="30px" /></a>'.$file->getBaseName();
break;
case 'docx':
echo '<a href=""><img src="icones/doc.ico" width="30px" height="30px" /></a>'.$file->getBaseName();
break;
case 'doc':
echo '<a href=""><img src="icones/doc.ico" width="30px" height="30px" /></a>'.$file->getBaseName();
break;
case 'pdf':
echo '<a href=""><img src="icones/pdf.ico" width="30px" height="30px" /></a>'.$file->getBaseName();
break;
case 'ppt':
echo '<a href=""><img src="icones/ppt.ico" width="30px" height="30px" /></a>'.$file->getBaseName();
break;
case 'rar':
echo '<a href=""><img src="icones/rar.ico" width="30px" height="30px" /></a>'.$file->getBaseName();
break;
case 'zip':
echo '<a href=""><img src="icones/zip.ico" width="30px" height="30px" /></a>'.$file->getBaseName();
break;
case 'avi':
echo '<a href=""><img src="avi.ico" width="30px" height="30px" /></a>'.$file->getBaseName();
break;
case 'mp3':
echo '<a href=""><img src="icones/mp3.ico" width="30px" height="30px" /></a>'.$file->getBaseName();
break;
case 'wmv':
echo '<a href=""><img src="icones/wmv.ico" width="30px" height="30px" /></a>'.$file->getBaseName();
break;
case 'exe':
echo '<a href=""><img src="icones/exe.ico" width="30px" height="30px" /></a>'.$file->getBaseName();
break;
default:
echo '<a href=""><img src="icones/default.ico" width="30px" height="30px" /></a>'.$file->getBaseName();
}
}
}
}
?>
</body>
2 answers
По эта запись , можете сделать это, изменив файл .htaccess
следующим образом:
<FilesMatch "\.(?i:txt)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>
Это делает все текстовые файлы будут подаются с headers:
Content-Type: application/octet-stream
Content-Disposition: attachment;
Согласно данному ответ SOEN, чтобы использовать функцию задать заголовок по htaccess, необходимо включить модуль Apache.
Сила скачать txt файлов, я использовал function
чуть ниже:
Код:
function download($arquivo){
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream;");
header("Content-Length:".filesize($arquivo));
header("Content-disposition: attachment; filename=".$arquivo);
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Expires: 0");
readfile($arquivo);
flush();
}
Использование Кода:
download('forca_download.txt');
Ссылки:
Примечание: было Бы форме не настроить что-либо на сервер прозрачно, и который работает на всех серверах, которые часто не оставляет изменить конфигурация.