由于我的数据库不会占用大量图像,因此我将它们直接上传到数据库。但是,我在显示它们时遇到问题,我不想下载它们,我想在页面上看到它们。我正在尝试使用以下代码显示但它不起作用:
MyFiles Controller的功能显示():
function display($id)
{
$file = $this->MyFile->findById($id);
$this->set('image',$file['MyFile']['data']);
}
MyFile模型:
<?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 View的display.ctp
<?php
echo '<img src="/MyFilesController/display/4" />';
?>
答案 0 :(得分:3)
将图像保存在数据库中通常不是一个好主意。
你的状况要好得多(我假设你已经为'安全'做了这一点)将文件保存在无法访问网络的文件夹中,并使用Media Views进行渲染。这样,您仍然可以在使用控制器渲染图像时保持安全检查。
Cakes媒体视图专为流媒体文件设计,可以轻松配置图像。
2.3为此
提供了新的feature如果您出于安全考虑而不这样做,只需保存自己的问题并将其放入webroot
。