如果您将图像放在公共文件夹中,那么任何人都可以看到它。如果您想阻止任何人看到该图像,那么另一个(无法访问)文件夹中的图像是有意义的。在视图中,您的图像应该是这样的:
<img src="/imageRender/<?= $someimage ?>" alt="image">
那么您应该有一条路线来提供此“受保护”图像,如下所示:
$routes->match(['get', 'post'], 'imageRender/(:segment)', 'RenderImage::index/$1');
最后是提供图像的控制器:
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
class RenderImage extends Controller
{
public function index($imageName)
{
if(($image = file_get_contents(WRITEPATH.'uploads/'.$imageName)) === FALSE)
show_404();
// choose the right mime type
$mimeType = 'image/jpg';
$this->response
->setStatusCode(200)
->setContentType($mimeType)
->setBody($image)
->send();
}
}
在控制器中,您应该对请求进行一些检查,例如请求图像的人是否已登录或具有查看图像的适当权限,否则您将返回“公共文件夹”示例,任何人都可以看到图像(所以,为什么要经历这么多麻烦?:P)。