使用codeigniter在webroot之外提供图像

时间:2014-01-15 09:36:39

标签: php codeigniter

我正在使用Codeigniter并将上传的文件存储在Web根目录之外作为安全预防措施,以便无法从浏览器等直接访问它们或上传文件夹。

我的结构是这样的:

private
|_application
|_system
|_uploads
public_html
|_index.php

我的问题是,是否有Codeigniter功能,类似于CakePHPs sendFile我可以用来提供图像。

我知道我可以将图像存储在Web根目录中并将上传类型限制为图像,但我不想这样做。

我也知道我可以编写一个image.php样式脚本来获取文件路径并返回一个图像标题,但在我沿着那条路走下去之前,我想知道是否有更好/预定义的方法来使用CodeIgniter具体?

1 个答案:

答案 0 :(得分:3)

我建议您使用处理图像请求的函数创建一个控制器。

简单示例:

<?php
class Img extends CI_Controller {

    public function jpg($file)
    {
             // validate $file here, very important!
             $path = '../../uploads/' . $file;
             header('Content-type: image/jpeg');
             readfile($path);
    }
}
?>

现在你可以将你的img src指向:

<img src="<?php echo base_url('img/jpg/myimage.jpg') ?>" />