2016-04-03 58 views
0

我想上传特定的文件。验证上传的文件扩展名Yii2

这是我的代码:

[['file'], 'file', 'extensions' => ['pdf','php'], 'wrongExtension'=>'pdf,php files only'], 

当我尝试上传PDF,伟大工程,但是当我尝试上传PHP文件说: “PDF,PHP文件只”。 (点击提交按钮后) 我也试过了,txt,js等等,我也有同样的问题。

print_r($ att-> file);

yii\web\UploadedFile Object ([name] => backup-restore-mysql.pdf [tempName] => C:\xampp\tmp\php8364.tmp [type] => application/pdf [size] => 310139 [error] => 0) 
yii\web\UploadedFile Object ([name] => requirements.php [tempName] => C:\xampp\tmp\phpE22C.tmp [type] => application/octet-stream [size] => 5051 [error] => 0) 

控制器:

if ($att->load(Yii::$app->request->post()) && $att->validate()){ 
$att->file = UploadedFile::getInstance($att, 'file'); 
    if (!empty($att->file)){ 
     $extension = $att->file->extension; 
     $att->Filename = $att->file->baseName; 
     $att->Extension = $extension; 
     $att->Size = $att->file->size; 
     $att->C_Id = $id; 

     if ($att->save()){ 
      if(!is_dir('files/'.$extension.'/')){ 
       mkdir(('files/'.$extension.'/')); 
      } 

      $att->file->saveAs('files/'.$extension.'/'.$att->file->name); 
     } 
    } 
} 

什么,我做错了什么?

+0

默认情况下,Yii将通过[mime type](https://github.com/yiisoft/yii2/blob/master/framework/validators/FileValidator.php#L351)检查文件及其扩展名。 。你的服务器是否有正确配置的MIME类型?另外,服务器是否安装了'fileinfo'扩展,就像'[FileHelper](https://github.com/yiisoft/yii2/blob/master/framework/helpers/BaseFileHelper.php#L133)做MIME类型检测。你可以看看关闭MIME类型验证,但我不会推荐它。 –

+0

尝试这种方式''extensions'=>'pdf,php'' – GAMITG

回答

0

我自己解决了这个问题。

$att->upload_file->saveAs(path,nameOfFile); 
$att->upload_file = NULL; 
$att->save(); 

感谢您的回复。 @MSost和@ G4M1TG