CakePHP如何在db中存储图像并显示它?

时间:2012-09-14 12:53:14

标签: image cakephp view

我不知道如何在db中存储图像并显示它?

我想要做的是在db中存储图像路径并将图像存储在/ img /文件夹中,然后将其显示给用户。

在我的注册表格中,我要求用户上传这样的图像

<?php echo $this->Form->input('image', array('class'=>'forminput', 'label' => 'Upload Image:', 'type' => 'file'));  ?>

并且在数据库类型的图像字段中是longblob。

像这样向用户显示......

<?php echo $this->html->image('Auth.User.image');?>

2 个答案:

答案 0 :(得分:2)

将图像存储在服务器上,在DB中只保存图像名称。

通常情况下,图片会存储在 webroot img 文件夹中。当您显示图像时,您将拥有以下内容:

<?php echo $this->Html->image('img' . DS . CakeSession::read('Auth.User.image')); ?>
  • 其中图片是您上传的图片的名称,保存在“用户”表格的图片字段中。

在控制器内部,您应该像在PHP中一样正常地上传文件。

$file_name = $_POST['User']['name'];
$tmp_file = $_POST['User']['tmp_name'];
if(is_uploaded_file($tmp_file)){ 
    if(move_uploaded_file($tmp_file){
        ... 
        $this->data['User']['image'] = $file_name; 
        $this->User->save($this->data);
    }
}

答案 1 :(得分:0)

paste it in your controller and change the field and model names accroding to 

公共函数add(){

    $this->set('status_tbl', $this->Player->Status->find('list'));


        if ($this->request->is('post')) {
             $this->Player->create();
             if(!empty($this->request->data)){

                if(!empty($this->request->data['Player']['image']['name'])){

                $file = $this->request->data['Player']['image']; 

                $ext = substr(strtolower(strrchr($file['name'], '.')), 1); 

                $arr_ext = array('jpg', 'jpeg', 'gif'); 


        if(in_array($ext, $arr_ext)){
        $this->request->data['Player']['image'] = $file['name'];
        move_uploaded_file($file['tmp_name'],'uploads/file'.$file['name']);



        $this->Player->save($this->request->data);
        }

                }


        if($this->Player->save($this->request->data)){
        return $this->redirect(array('controller'=>'Players',"action"=>'index'));

                }
            }

        }

}