Php 如何允许上传YII中带有特殊字符的文件名?

Php 如何允许上传YII中带有特殊字符的文件名?,php,file,file-upload,yii,filenames,Php,File,File Upload,Yii,Filenames,我想上传名称包含特殊字符(如@、#、!、~等)的文件。如何允许文件名使用这些字符。我的代码是: public function actionAddImage() { $model=new Gallery; $this->pageTitle = CHtml::encode(Yii::app()->name).' :: Add Image'; if(isset($_POST['Gallery'])) { $rnd

我想上传名称包含特殊字符(如@、#、!、~等)的文件。如何允许文件名使用这些字符。我的代码是:

public function actionAddImage()
{           

    $model=new Gallery;
    $this->pageTitle = CHtml::encode(Yii::app()->name).' :: Add Image';

    if(isset($_POST['Gallery']))
    {
        $rnd = rand(0,9999);
        $model->attributes=$_POST['Gallery'];
        $uploadedFile = CUploadedFile::getInstance($model,'image');

        $fileName = "{$rnd}-{$uploadedFile}";

        $model->image = $fileName;
        $model->description = $_POST['Gallery']['description'];

        if($model->save())
        {               
             $uploadedFile->saveAs(Yii::getPathOfAlias('webroot').'/upload/'.$fileName); // image will uplode to rootDirectory/banner/

             //thumbmail---------------start---
            Yii::app()->thumb->setThumbsDirectory('/upload/original/');             
            Yii::app()->thumb->load(Yii::getPathOfAlias('webroot').'/upload/'.$fileName)->resize(538,359)->save($fileName);

            Yii::app()->thumb->setThumbsDirectory('/upload/thumb/');                
            Yii::app()->thumb->load(Yii::getPathOfAlias('webroot').'/upload/'.$fileName)->resize('0','110')->save($fileName);   

            Yii::app()->thumb->setThumbsDirectory('/upload/thumb_70/');
            Yii::app()->thumb->load(Yii::getPathOfAlias('webroot').'/upload/'.$fileName)->resize('0',70)->save($fileName);  

            Yii::app()->user->setFlash('employee','Image has been added successfully');
            $this->redirect(array('ManageGalleries'));
        }
    }
    $this->layout = "loginMain";
    $this->render('create',array(
        'model'=>$model,
    ));
}
当我试图上传包含特殊字符的文件时,它没有上传文件。
请帮助我如何允许文件名使用此选项。

我认为这不是yii的限制,更可能是浏览器/http/os的限制。我不认为有办法解决这个问题(除了从文件名中删除所有这样的字符)。文件名中对特殊字符的支持因操作系统而异,PHP本身也有问题。清理实际文件名,如果必须保留原始文件名,请将其保存在数据库中。