2016-04-03 12 views
0

Ich versuche, bestimmte Dateien hochzuladen.Überprüfen Sie die hochgeladene Dateierweiterung. Yii2

Dies ist mein Code:

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

Wenn ich Upload pdf versuchen, funktioniert gut, aber wenn ich Upload PHP-Datei versuchen sagen: "pdf, PHP-Dateien nur". (nach Klick auf Senden Schaltfläche) Ich habe versucht, txt, js, etc ... und ich habe das gleiche Problem.

print_r ($ att-> Datei);

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) 

Controller:

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); 
     } 
    } 
} 

, was ich falsch mache?

+0

standardmäßig Yü prüfen Dateien und die Erweiterungen von [MIME-Typ] (https://github.com/yiisoft/yii2/blob/master/framework/validators/FileValidator.php#L351) . Sind auf Ihrem Server Mime-Typen richtig konfiguriert? Hat der Server auch die Erweiterung 'fileinfo' installiert, wie sie von' [FileHelper] (https://github.com/yiisoft/yii2/blob/master/framework/helpers/BaseFileHelper.php#L133) 'verwendet wird Mime-Typ-Erkennung zu tun. Sie können überprüfen, ob die Mime-Typ-Validierung deaktiviert ist, aber ich würde es nicht empfehlen. –

+0

versuchen Sie diesen Weg ''Erweiterungen' => 'pdf, php'' – GAMITG

Antwort

0

Ich habe die Frage selbst gelöst.

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

Danke für alle Antworten. @MSost und @ G4M1TG

Verwandte Themen