2

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

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

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

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

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

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

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

2 回答 2

2

您将图像存储在服务器上,在数据库中您只保存图像的名称。

通常图像存储在webroot的img文件夹中。当您显示图像时,您将拥有如下内容:

<?php echo $this->Html->image('img' . DS . CakeSession::read('Auth.User.image')); ?>
  • 其中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);
    }
}
于 2012-09-14T12:57:10.237 回答
0
paste it in your controller and change the field and model names accroding to 

公共功能添加(){

    $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'));

                }
            }

        }

}
于 2018-08-21T12:11:03.730 回答