在使用php下载文件之前检查文件

时间:2018-05-19 15:20:51

标签: php codeigniter

我想在下载文件之前检查文件, 我有控制器下载和功能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 :(得分:1)

sklearn将不会以这种方式运作,因为您始终获得网站网址...

然而,

site_url()检查服务器上是否存在目录或文件 - 所以你需要一个绝对位置..

您可以使用名为file_exists()的{​​{1}} - 它指向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"; } }

答案 1 :(得分:0)

$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

中获取文件