【问题标题】:cakephp display image from databasecakephp 显示数据库中的图像
【发布时间】:2019-08-13 21:54:06
【问题描述】:

由于我的数据库不会拍摄大量图像,因此我将它们直接上传到数据库。但是,我在显示它们时遇到问题,我不想下载它们,我想在页面上看到它们。我正在尝试使用以下代码显示,但它不起作用:

MyFiles 控制器的函数 display():

    function display($id)
   {

      $file = $this->MyFile->findById($id);
    $this->set('image',$file['MyFile']['data']);

   }

我的文件模型:

    <?php 
class MyFile extends AppModel {

    var $name = 'MyFile';

}

?>

MyFilesController 的函数 add()

function add() {            
    if (!empty($this->data) && 
         is_uploaded_file($this->data['MyFile']['File']['tmp_name'])) {
        $fileData = fread(fopen($this->data['MyFile']['File']['tmp_name'], "r"), 
                                 $this->data['MyFile']['File']['size']);

        $this->request->data['MyFile']['name'] = $this->data['MyFile']['File']['name'];
        $this->request->data['MyFile']['type'] = $this->data['MyFile']['File']['type'];
        $this->request->data['MyFile']['size'] = $this->data['MyFile']['File']['size'];
        $this->request->data['MyFile']['data'] = $fileData;

        $this->MyFile->save($this->request->data);

        $this->redirect(array('controller'=>'posts','action'=>'index'));
    }
}

编辑:

MyFiles 视图的 display.ctp

    <?php

echo '<img src="/MyFilesController/display/4" />';
?>

【问题讨论】:

  • 你的布局是否有:fetch('content'); ?>
  • 您如何尝试将图像加载到浏览器中?数据网址?从 src="..."? 调用的图像显示脚本?
  • @MarcB 你能更具体一点吗?如果我使用 scr 不应该是目录文件夹而不是数据库?
  • 您没有指定您的蛋糕 php 版本。请这样做 - 永远。
  • &lt;img src="somescript.php?imageID=xxx"&gt;&lt;img src="data:image/jpeg;base64,...."&gt;?不知何故,您必须以浏览器识别的形式将图像从 PHP 获取到浏览器。

标签: php database cakephp


【解决方案1】:

在数据库中保存图像通常不是一个好主意。

您最好(我假设您已经这样做是为了“安全”)将文件保存在无法通过网络访问的文件夹中并使用Media Views 来呈现它们。这样,您仍然可以在使用控制器渲染图像时进行安全检查。

Cakes 媒体视图专为将文件流式传输到浏览器而设计,并且可以轻松配置为图像。

2.3 为此有一个新的feature

如果您出于安全原因不这样做,只需将问题留给自己并将其放入webroot

【讨论】:

  • 我将它们保存在数据库中,所以我没有将它们保存在某个文件夹中,但是,我正在尝试更改为这种方式,并且只使用对数据库中图像 URL 的引用表格稍后在浏览器页面上显示图像,这就是我现在正在尝试的,但是遇到了一些困难
  • 使用这个插件github.com/josegonzalez/upload,它有很好的文档并且可以开箱即用。
  • @Ross 已经推荐了他们,我承认在我的研究过程中我发现了那个页面。好吧,我稍后会尝试说些什么
  • 我能够将图像上传到 webroot/files/user/photo/.. 但是现在,我如何通过它们引用的表格,在网页上显示图像申请?
猜你喜欢
  • 1970-01-01
  • 2013-08-21
  • 2015-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多