表用户
image(blob type) ------------------------------ 0xFFD8FFE0
myController的
function displayImage($id)
{
$this->autoRender = false;
$peoples=TableRegistry::get('peoples');
$peoples=$peoples->getRecord([ 'image'])->first();
header('Content-Type: image/jpeg');
echo $peoples['image'];
}
模型
function getRecord($fields)
{
return $this->find('all')->select($fields);
}
但设置此
<img id="imgPreview" src="displayImage/30">
当我向我展示myController/displayImage/30
这个节目Resource id #170
时,图片没有显示任何内容!
为什么?
如何显示图像?
答案 0 :(得分:3)
您需要阅读返回的资源以获取实际内容(图片数据)
public function displayImage($id)
{
// ...
echo stream_get_contents($peoples['image']);
}
这是您方法的修改工作示例。我假设你有一个名为Peoples
的模型,其属性为image
(BLOB),而$id
指的是基础表中的某一行
public function displayImage($id) {
$table = TableRegistry::get('Peoples');
$entity = $table->get($id);
$this->response->type('jpg');
$this->response->body(stream_get_contents($entity->image));
return $this->response;
}
答案 1 :(得分:0)
您是否尝试从用户ID中提取图片?
如果是这种情况
$peoples = TableRegistry::get('Peoples');
$peoples->find('all');
$peoples->matching('Users', function($q) use($id) {
return $q->where(['Users.id' => $id]);
});
$result = $peoples->first();
$result->users[0]->image;
答案 2 :(得分:0)
如果您要解决的问题是如何使用正确的HTML代码上传图片。为此,您只需要在数据库表列varchar type中指定该上载字段,然后在视图中从中上载图像的位置中指定文件类型即可。像这样:
<?php
echo $this->Form->input('your_column_name', [ 'type' => 'file']);
?>
但是,如果您的问题是有关无法检索或发送到index.ctp或前端视图的上载图像,那么您的解决方案就在这里: How to retrieve in cakephp3.7 the name as string of an image uploaded trough a form with blob column into a mysql database?