0

こんにちは、私は CActiveFrom fileField を使用してサーバーにファイルをアップロードしていますが、pdf ファイルは保存されず、すべての拡張子が保存されています。ファイルを保存するためのコントローラー コードです。

コントローラ

 if(isset($_POST['Uploadinfo']))
        {
            $model->attributes=$_POST['Uploadinfo'];


            $file = CUploadedFile::getInstance($model, 'imageId');


            $model->imageId=CUploadedFile::getInstance($model, 'imageId');


            $valid = $model->validate();


            date_default_timezone_set('Asia/Kolkata');
            $serverTime = date("Y-m-d H:i:s", time());

            if(!empty($file->name) && $valid)
            {

                $modelFileLocation->filename = microtime() . $file->name;
                $modelFileLocation->orgfilename = $file->name;
                $modelFileLocation->type = 1;
                $modelFileLocation->createdOn = $serverTime;
                $modelFileLocation->lastModifiedBy = 'lecturer';

                $valid = $modelFileLocation -> validate();


                $modelFileLocation->deptId = $_POST['Uploadinfo']['departmentId'];
                print_r($file);

                if ($modelFileLocation->save())
                {
                    $file = CUploadedFile::getInstance($model, 'imageId');
                    print_r($modelFileLocation);
                print_r($file);
                die();  

                $model->userId = $_POST['Uploadinfo']['userId'];
                $model->imageId = $modelFileLocation->id;
                $model->departmentId = 1;
                $model->createdOn = $serverTime;
                $model->lastModifiedBy = 'lecturer';

                    if ($model->save())
                    {

                        $modeldocumentinfo->property = $file->type;
                        $modeldocumentinfo->fileName = $modelFileLocation->filename;
                        $modeldocumentinfo->creator = 'lecturer';
                        $modeldocumentinfo->lastUploadedOn = $serverTime;
                        $modeldocumentinfo->uploadId = $model->id;
                        $modeldocumentinfo->viewers = 0;

                        $modeldocumentinfo->save();

                        $file->saveAs('uploads/files/' . $modelFileLocation->filename);
                            print_r($file);
            die();
                        //Yii::app()->user->setFlash('uploadsuccess', "File Uploaded Successfully...");
                        $this->redirect(array('lmaterialitview'));
                    }
                }

上記のコードでは、このモデルが保存される前に $modelFileLocation モデルが保存される前後にファイルのインスタンスを出力しますファイルインスタンスが取得されますが、このモデルが保存された後、ファイルインスタンスは空になります

ここにインスタンスコードがあります

インスタンスメッセージ

 CUploadedFile Object ( [_name:CUploadedFile:private] => example.pdf [_tempName:CUploadedFile:private] => C:\wamp\tmp\php4BB.tmp [_type:CUploadedFile:private] => application/pdf [_size:CUploadedFile:private] => 205374 [_error:CUploadedFile:private] => 0 [_e:CComponent:private] => [_m:CComponent:private] => )

2番目のprint_r()では消えていますが、残りの拡張機能では表示されて保存されています

4

1 に答える 1

0

$deleteTempFile引数をfalseに設定するだけです

$file->saveAs('uploads/files/' . $modelFileLocation->filename, false);
于 2013-02-24T22:04:25.470 に答える