2013-07-05 3 views
1

Я использую Yii для загрузки некоторых файлов. И я получаю следующую ошибку.Yii finfo_file() not found

finfo_file() [<a href='function.finfo-file'>function.finfo-file</a>]: File or path not found 'C:\xampp\tmp\phpF48A.tmp' 

Я не уверен, что именно это от я читал вокруг на эту тему, я не уверен, что у меня есть база данных magic.mime, мне нужно, чтобы получить это и настроить его? Или проблема из-за чего-то еще. Это первый раз, когда я использовал Yii, поэтому я не уверен, что это просто проблема с конфигурацией или что-то еще. Это стопка:

if($this->mimeTypes!==null) 
221   { 
222    if(function_exists('finfo_open')) 
223    { 
224     $mimeType=false; 
225     if($info=finfo_open(defined('FILEINFO_MIME_TYPE') ?  FILEINFO_MIME_TYPE : FILEINFO_MIME)) 
226      $mimeType=finfo_file($info,$file->getTempName()); 
227    } 

Любая помощь, очень ценится. Чтобы добавить файл, он сохраняется в правильном каталоге, но записи не сохраняются в БД.

Благодаря

Jonny

Обновленный код

Модель

array('file', 'file', 'allowEmpty' => false, 'maxSize'=> 512000, 'maxFiles'=> 1, 
     'mimeTypes' => 'application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/rtf, text/plain', 

Controller (Практически по умолчанию код ИГН)

public function actionCreate() { 

    $model = new File; 


    if (isset($_POST['File'])) { 
     $model->setAttributes($_POST['File']); 

     // Set file 
     $model->file = CUploadedFile::getInstance($model,'file'); 

     // Set directory 
     $dest = Yii::getPathOfAlias('application.uploads'); 

     $model->tmp_name = time(); 

      $model->file->saveAs(($dest . '/' . $model->tmp_name . '.' . $model->file->extensionName)); 


     if ($model->save()) { 


     } else { 
       $this->redirect(array('view', 'id' => $model->id)); 
     } 
    } 

    $this->render('create', array('model' => $model)); 
} 
+0

Включить расширение. http://stackoverflow.com/questions/3579072/php-fileinfo-is-undefined-function – mario

+0

Привет, Марио, я только что проверил файл php.ini и уже включен. – Jonnny

+0

Сообщение об ошибке «Файл или путь не найден», поэтому добавочный номер загружен, но файл не существует. –

ответ

1

Я не совсем уверен, почему или что с этим не так. Все, что я могу показать, - это окончательный код, который, кажется, работает нормально (за исключением того, что я еще не сортировал загрузку .docx.

Модель:

  array('file', 'file', 'on' => 'insert', 'maxSize'=> 512000, 'maxFiles'=> 1, 
     'mimeTypes' => 'application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/rtf, text/plain', 
     'tooLarge'=> 'File cannot be larger than 500KB.', 
     'wrongType'=> 'Format must be:<code>.doc</code>, <code>.docx</code>, <code>.txt</code>, <code>.rtf</code>'), 

Контроллер:

public function actionCreate() { 

    $model = new File; 


    if (isset($_POST['File'])) { 

     $model->setAttributes($_POST['File']); 

     // Set file 
     $model->file = CUploadedFile::getInstance($model,'file'); 

     // Set directory 
     $dest = Yii::getPathOfAlias('application.uploads'); 

     $model->tmp_name = time(); 
     $model->file_type = $model->file->type; 
     $model->file_size = $model->file->size; 


     if ($model->save()) { 

      $model->file->saveAs(($dest . '/' . $model->tmp_name . '.' . $model->file->extensionName)); 

      $this->redirect(array('view', 'id' => $model->id)); 

     } 
    } 

    $this->render('create', array('model' => $model)); 
} 

Надеется, что это какая-то помощь другиму.

2

Я обнаружил, что часть проверки mimeType системы проверки файлов Yii является немного проблематичной (или, по крайней мере, темпераментной ;-). Есть ряд глюков, с которыми вы можете столкнуться, но это отличается от ошибок, которые я видел раньше.

Замечание Per @ PeterM, похоже, что ваш временный файл не может быть найден, что означает, что будет сложно завершить его проверку. Если вы отключите проверку mimeType, а затем переименуете файл как часть его загрузки (чтобы вы знали, где это должно быть), ваш файл будет загружен?

Возможно, вам лучше всего убедиться, что ваша система загрузки достаточно прочная, а затем работает над добавлением в проверки mimeType. Потому что они могут быть немного придирчивы ...

+0

Файл загружен в правильную папку ok, это просто ошибки и doesn Не сохранять запись в базе данных. Я изменил mimeType на «типы», и произошло то же самое, файл получил правильно, но на этот раз нет ошибки, но запись не была сохранена в БД. – Jonnny

+0

Обновленный код для модели и контроллера. – Jonnny

+1

Итак, проблема в том, что ваша запись не отображается в БД или что файл не сохраняется или оба? Я думаю, что было бы проще разобраться в проблемах с сохранением БД, и тогда мы сможем работать над этим. – acorncom