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);
}
}
}
私が間違ってやっていますか?
デフォルトでは、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タイプのバリデーションを無効にすることができますが、私はそれをお勧めしません。 –
このようにしてください ''extensions' => 'pdf、php'' – GAMITG