Yii无法重命名/移动上传的文件

时间:2014-04-08 04:55:08

标签: php file-upload yii properties file-rename

我的控制器Sitecontroller.php,查看文件upload_new.php,型号为Resume_edit.php

我收到了这个错误:

  

致命错误:在第406行的C:\ wamp \ www \ yii \ jobsite_orginal \ protected \ controllers \ SiteController.php中的非对象上调用成员函数saveAs()*

Sitecontroller.php

<?php
class SiteController extends Controller
 {
  public function actionupload_new()
  {
   $user_id = 97;
   $jobProfileM2 = new Resume_edit();
 $jobProfileM2 = Resume_edit::model()->findByAttributes(array('user_id' => $user_id));
   if(isset($_POST['Resume_edit']))
      {
        $jobProfileM2->attributes = $_POST['Resume_edit'];
        $jobProfileM2->user_id = $user_id;
        if($jobProfileM2->save())
           {
            $jobProfileM2->user_id = $user_id;
            Yii::app()->user->setFlash('success', "Resume Updated Successfully!");
       $time=time();                                                                         $filename=CUploadedFile::getInstance($jobProfileM2,'resume');
$filename2=explode('.',$filename);
            $filename3=$filename2[0].$time.'.'.$filename2[1];

            $jobProfileM2->resume=$filename3;
            if($jobProfileM2->save())
               {
          $jobProfileM2->resume->saveAs(Yii::app()->basePath.'/../resume/'.$filename3);
               }
           } 
         else 
            {
                Yii::app()->user->setFlash('error', "Error,Canot save Data!");
            }
     }
   $this->render('upload_new', array('model' => $jobProfileM2));
 }
     }
?>

查看-upload_new.php

 <div class="form">
   <?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'login-form',
'enableClientValidation'=>true,
'htmlOptions' => array('enctype' => 'multipart/form-data'),
    'clientOptions'=>array(
    'validateOnSubmit'=>true
),
   )); ?>

 <?php
 foreach(Yii::app()->user->getFlashes() as $key => $message) {
    echo '<div class="flash-' . $key . '">' . $message . "</div>\n";
  }
?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
 <div class="row">
 <?php
 echo $form->labelEx($model, 'resume');
 echo $form->fileField($model, 'resume');
 echo $form->error($model, 'resume');
?>
 </div>
<div class="row buttons">
    <?php echo CHtml::submitButton('Submit'); ?>
</div>
<?php $this->endWidget(); ?>
 </div>

这是第406行:

 $jobProfileM2->resume->saveAs(Yii::app()->basePath.'/../resume/'.$filename3);

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

resume是模型Resume_edit的属性,属性没有函数saveAs()

如果要移动/重命名文件,请使用rename()方法。

$newFileName = Yii::app()->basePath.'/../resume/'.$filename3;
@rename($jobProfileM2->resume, $newFileName);
$jobProfileM2->resume = $filename3;