ZIP-файл сохраняет не полностью с помощью doctrine :: createquery-> update () - PullRequest
0 голосов
/ 01 января 2011

Я получаю 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 (результаты), длина (результаты), primhd_log. * FROM primhd_log ГДЕ 1 показывает размеры 3900, 1607, 2692 соответственно.

Есть идеи, как определить эту проблему?

Версия: Symfony 1.4.6

Схема:

PrimhdLog: actAs: Отметка времени: создан: имя: созданtype: отметка времени столбцы: id: {type: integer (4), notnull: true, unique: true, primary: true, автоинкремент: true} creation_by: {type: integer (4)} details: {type: clob (16000000), notnull: true} отправлено: {type: timestamp} submit_by: {type: integer (4)} results: {type: clob (16000000)} start: {type: timestamp} end: {type: timestamp} files_expected: {type: clob (16000000)} output_filename: {тип: строка (100)} отношения: Создатель: {class: Person, local: creation_by, foreignAlias: CreatorPRIMHDLogList} Отправитель: {class: Person, local: submit_by, foreignAlias: SubmitterPRIMHDLogList}}

1 Ответ

0 голосов
/ 03 января 2011

Какая у вас схема? В какой тип данных вы сохраняете информацию? 'текст'? 'Клякса'?

В zip-файле содержится много специальных символов, которые не может поймать даже mysql_escape_string, если это какой-то сумасшедший ^ @ или ^ M, то, что просто пропускается, учитывает разницу в размере.

Не очень помогает, но идея

...