Как заставить тип файлов.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>

Author: Vinícius, 2014-04-24

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.

 9
Author: Miguel Angelo, 2017-05-23 12:37:23

Сила скачать 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');

Ссылки:

Примечание: было Бы форме не настроить что-либо на сервер прозрачно, и который работает на всех серверах, которые часто не оставляет изменить конфигурация.

 12
Author: , 2014-04-24 13:54:45