yii上传文件错误

时间:2013-03-27 13:39:58

标签: yii

我是葡萄牙学生,我正在尝试实施游戏管理的网络应用程序。

game

的结构
`game` (
`idGame` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(75) NOT NULL,
`primaryScreen` blob NOT NULL,
`game_content` blob NOT NULL,
`category` varchar(45) NOT NULL,
`platform` varchar(45) NOT NULL,
`device` varchar(45) NOT NULL,
`description` varchar(250) NOT NULL,
`funcionalities` varchar(150) NOT NULL,
PRIMARY KEY (`idGame`)
)

`screen` (
`idScreen` int(11) NOT NULL AUTO_INCREMENT,
`id_Game` int(11) NOT NULL,
`image` longblob NOT NULL,
PRIMARY KEY (`idScreen`),
KEY `id_Game` (`id_Game`)
) 

我已经阅读了如何将文件上传到数据库中的bolb的yii教程 http://www.yiiframework.com/wiki/95/saving-files-to-a-blob-field-in-the-database

唯一的区别是在保存之前的功能中我只想保留文件的内容(我可以这样做,还是我必须保留文件名,文件扩展名......) 所以我在模特中这样做:

public function beforeSave()
{
if($file=CUploadedFile::getInstance($this,'game_uploaded'))
{
// $this->file_name=$file->name;
//$this->file_type=$file->type;
//$this->file_size=$file->size;
$this->game_content=file_get_contents($file->tempName);
//$file->saveAs('path/to/uploads');

}
if($file=CUploadedFile::getInstance($this,'primscreen'))
{
//$this->file_name=$file->name;
//$this->file_type=$file->type;
//$this->file_size=$file->size;
$this->primaryScreen=file_get_contents($file->tempName);
//$file->saveAs('path/to/uploads');
}




return parent::beforeSave();
}

但是当我尝试我有这个错误时:

PDOStatement::execute(): MySQL server has gone away 
有人可以帮我吗? 我很感激任何建议。谢谢:))

3 个答案:

答案 0 :(得分:0)

在您的配置文件中

尝试将其主机从“localhost”更改为“127.0.0.1”

答案 1 :(得分:0)

在保存到数据库之前尝试使用base64_encode

Bom trabalho!

答案 2 :(得分:0)

  1. MySQL server has gone away的一个常见原因是因为超时。尽量增加default_socket_timeout

    ini_set('default_socket_timeout', 300);
    
  2. 另一个可能是blob的大小。尝试在php.ini

    中增加上传大小限制
    post_max_size
    upload_max_filesize