如何在codeigniter 4中显示上传的图像
Posted
技术标签:
【中文标题】如何在codeigniter 4中显示上传的图像【英文标题】:how to display uploaded images in codeigniter 4 【发布时间】:2020-03-02 20:21:53 【问题描述】:在 Codeigniter 4 中,如何显示上传的图片。是否需要授予任何权限?
我在 CI4 项目中的 writable/uploads/avatar 中上传了图片 当我检查检查元素并复制链接并粘贴到浏览器上时,图像显示。
<pre>
<img src="<?=WRITEPATH.$list->avatars?>" class="img-radius" >
<img src="<?=base_url()?>/writable/<?=$list->avatars?>" class="img-
radius" >
</pre>
请解释如何显示图像
【问题讨论】:
【参考方案1】:基本上,如果您想简单地引用图像,您应该将它们存储在您的 public/ 文件夹中,例如 public/uploads,然后只需:
<img src="<?=base_url()?>public/uploads/Avatar.png" >
在 writable/ 文件夹主题和图像上,检查线程 https://forum.codeigniter.com/thread-67352.html
对于其余部分,您将不得不处理文档中有关 Uploaded files 的信息
当您通过<input type="file" name="avatar" />
上传图像时,它会返回一个包含文件信息的数组以进行处理。您可以尝试使用$file->move(WRITEPATH.'public/uploads');
部分将其移至 public/uploads 文件夹,看看效果如何。
或者...一种或另一种方式,只需将您的文件拖放/上传到您想要的 public/assets 文件夹中并在标签中引用它们,它就可以工作了。
希望它有所帮助,它只是触及表面。
【讨论】:
【参考方案2】:您可以将上传的文件移动到公共上传文件夹:
$fileName = $file->getRandomName();
$ext = $file->getClientExtension();
$file->move(ROOTPATH.'public/assets/uploads/', $fileName);
log_message("info", $fileName . " saved to public upload folder");
【讨论】:
【参考方案3】:正确的方法是在公共/上传中创建可写/上传的符号链接
ln -s [project_directory]/writable/uploads uploads
现在您可以访问文件 siteurl/uploads/ddmmyy/filename
【讨论】:
【参考方案4】:如果您将图像放在公共文件夹中,那么任何人都可以看到它。如果您想阻止任何人看到该图像,那么另一个(无法访问)文件夹中的图像是有意义的。 在视图中,您的图像应该是这样的:
<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)。
【讨论】:
以上是关于如何在codeigniter 4中显示上传的图像的主要内容,如果未能解决你的问题,请参考以下文章
如何在 [codeigniter] 中上传具有随机名称规则的图像