проверьте файл перед загрузкой файла с помощью php - PullRequest
0 голосов
/ 19 мая 2018

я хочу проверить файл перед загрузкой, у меня есть контроллер Download и функция download_file

вот мой код: я устал от этого кода, и я всегда не получаю

public function download_file($namafile,$nofile)
        {
    $filecek =(site_url()."/uploads/file/".$namafile);
        $data = file_get_contents(site_url().'/uploads/file/'.$namafile);

    echo "$filecek";

    if (!file_exists($filecek)) {
      echo "no";
    }else {
force_download($namafile,$data);
      echo "yes";
    }

        }
    }

а это ссылка для скачивания

<a href="<?php echo base_url(); ?>download/<?php echo $getFiles['file']; ?>/<?php echo $getFiles['nofile']; ?>"><i class="icon-download"></i> <?php echo $getFiles['kategori']; ?></a>

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

site_url() не будет работать таким образом, потому что вы всегда получаете URL-адрес веб-сайта ...

file_exists(), однако проверяет, существует ли каталог или файл на вашем сервере или нет - так что вам нужен абсолютныйposition ..

Существует CONSTANT с именем FCPATH, который вы можете использовать - он указывает на каталог, в котором находится ваш index.php.

Таким образом, вы можете попробовать следующее

public function download_file($namafile,$nofile)
{
    $filecek = FCPATH."uploads/file/".$namafile;

    echo "$filecek";

    if (!file_exists($filecek)) 
    {
        echo "no";
    }
    else 
    {
        force_download($namafile, NULL);
        echo "yes";
    }
}

единственное условие здесь - это то, что uploads/file/ существует в вашем FCPATH.

0 голосов
/ 19 мая 2018

Что означает вывод $filecek?

IMO $filecek =(site_url()."/uploads/file/".$namafile); следует изменить на $filecek =(base_url()."/uploads/file/".$namafile);, поскольку

echo base_url(); //http://example.com/website
echo site_url(); //http://example.com/website/index.php

Для доступа к ресурсам base_url() приемлемо, как вы можетене получить файл в http://example.com/website/index.php/file.ext

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...