2016-04-03 13 views
0

特定のファイルをアップロードしようとしています。私はPDFファイルをアップロードしようとすると、アップロードされたファイル拡張子を検証するYii2

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

素晴らしい作品が、私は言うアップロードPHPファイルをしようとすると::

これは私のコードである "PDF、PHPファイルのみ"。 (Submitボタンをクリックした後に) 私はあまりにも、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タイプが正しく設定されていますか?また、 '[FileHelper](https://github.com/yiisoft/yii2/blob/master/framework/helpers/BaseFileHelper.php#L133)で使用されているように、サーバに' fileinfo'拡張がインストールされていますか? MIMEタイプの検出を行うあなたはMIMEタイプのバリデーションを無効にすることができますが、私はそれをお勧めしません。 –

+0

このようにしてください ''extensions' => 'pdf、php'' – GAMITG

答えて

0

私は自分で質問を解決しました。

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

ありがとうございました。 @MSostと@ G4M1TG

関連する問題