Запретить прямой доступ к загруженному файлу в CI - PullRequest
1 голос
/ 22 декабря 2009

Как запретить прямой доступ к моему загружаемому файлу с помощью CodeIgniter.

Предположим, я сохранил весь свой файл в

Приложение / secretdirectory / file1.jpg Приложение / secretdirectory / file2.text Приложение / secretdirectory / file3.zip

Обычно я создаю прямую ссылку для доступа к этим файлам.

<a href="application/secretdirectory/file3.zip" > download here </a>

Я хочу предотвратить это, я хочу, чтобы моя ссылка была

<a href="<? echo site_url() . "download/file3.zip"  ?>" > download here </a>

Вы можете мне помочь ???

Ответы [ 2 ]

4 голосов
/ 22 декабря 2009

Вероятно, хорошей идеей будет передать его контроллеру следующим образом:

Class File extends Controller{

    function download($file){
        $data = file_get_contents('path/to/' . $file); // Read the file's contents
        $name = $file;
        force_download($name, $data);
    }
}

Ваша ссылка будет:

<?php echo anchor('file/download/' . $thefile, 'Download');?>

Таким образом, они никогда не узнают, из какого каталога они пришли.

0 голосов
/ 22 декабря 2009

Я уверен, что в CI есть библиотека, которая поможет с этим

в основном вы отправляете заголовки для правильного типа MIME, длины содержимого (filesize()) и затем выводите в браузер для загрузки эхо file_get_contents() может работать)

Если вы используете Apache, вы также можете запретить показ содержимого Directoy.

<Files .*>
    Order Deny,Allow
    Deny From All
</Files>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...