zip文件保存不完整与doctrine :: createquery-> update()

时间:2011-01-01 02:04:39

标签: mysql symfony1 doctrine zip

我收到一个zip文件,需要保存到数据库中。但是它似乎没有完全保存。

在此功能中:

public function executeUploadFile(sfWebRequest $request){

    if (!$_FILES['file']['error']){
        $fn = $_FILES['file']['tmp_name'];
        $fh = fopen($fn,'r+');
        $fc = fread($fh, filesize($fn));
        mail('me@myemail.com','test 3',$fn.'-'.filesize($fn).'-'.strlen($fc));
        fclose($fh);
        move_uploaded_file($_FILES['file']['tmp_name'],dirname(__FILE__).'/'.$_FILES['file']['name']);
        $q = Doctrine_Query::create()
            ->update('PrimhdLog')
            ->set('results', "'".mysql_escape_string($fc)."'")
            ->where("files_expected like '%".$_FILES['file']['name']."%'");
        $sql = $q->getSqlQuery();
        print $sql;
        $uprows = $q->execute();
    }else{
        mail('me@myemail.com','uploadFile has error on file',print_r($_FILES,1));
    }

    return sfView::NONE;
}

我上传的文件大小(字节)分别为4028,1658,2777。电子邮件日志和“ls -la”确认了这些尺寸。

然而,SELECT char_length(results),length(results),primhd_log。* FROM primhd_log WHERE 1分别显示大小3900,1607,2692。

知道如何识别这个问题吗?

版本是Symfony 1.4.6

架构:

PrimhdLog:   充当:     Timestampable:       创建:         名称:已创建         类型:时间戳   列:     id:{type:integer(4),notnull:true,unique:true,primary:true,autoincrement:true}     created_by:{type:integer(4)}     详情:{type:clob(16000000),notnull:true}     已提交:{type:timestamp}     submitted_by:{type:integer(4)}     结果:{type:clob(16000000)}     开始:{type:timestamp}     结束:{type:timestamp}     files_expected:{type:clob(16000000)}     output_filename:{type:string(100)}   关系:     创作者:{class:Person,local:created_by,foreignAlias:CreatorPRIMHDLogList}     提交者:{class:Person,local:submitted_by,foreignAlias:SubmitterPRIMHDLogList}}

1 个答案:

答案 0 :(得分:0)

你的架构是什么?您将信息保存到的数据类型是什么? '文本'? '斑点'?

一个zip文件包含许多特殊的字符,即使mysql_escape_string也不会捕获,如果它是一些疯狂的^ @或^ M,那只是被跳过它会占到大小差异。

没什么帮助,只是一个想法

相关问题