2

Zend Framework 2 で複数のファイルをアップロードする方法。この作業は完了しました。しかし、2番目のファイルで次のエラーが発生しました。

'first-filename' was illegally uploaded. This could be a possible attack. 

ご参考までに、

            $size   = new Size(array('max' => 1048576));
            $adapter= new \Zend\File\Transfer\Adapter\Http(); 
            $File    = $this->params()->fromFiles('logo');
            $adapter->setValidators(array($size), $File['name']);
            $FileName   = '';

            if (!$adapter->isValid()){
                $dataError = $adapter->getMessages();
                $error = array();
                foreach($dataError as $key=>$row)
                {
                    $error[] = $row;
                }
            } else {
                $adapter->setDestination(path);
                if ($adapter->receive($File['name'])) {
                    // manipulation
                }
            }

            $logoFile   = $this->params()->fromFiles('logo2');
            $adapterLogo    = new \Zend\File\Transfer\Adapter\Http(); 
            $adapterLogo->setValidators(array($size), $logoFile['name']);
            $logoFileName= '';

            if (!$adapterLogo->isValid()){
                $dataError = $adapterLogo->getMessages();
                $error = array();
                foreach($dataError as $key=>$row)
                {
                    $error[] = $row;
                }
            } else {
                $adapterLogo->setDestination(path2);
                if ($adapterLogo->receive($logoFile['name'])) {
                    // manipulation
                }
            }

この問題を解決するにはどうすればよいですか? なぜこのエラーが発生したのですか?

4

1 に答える 1

2

フォームに正しい enc タイプがあることを確認しましたか?

$form->setAttribute('enctype','multipart/form-data');

ファイル名も isValid チェックに追加します

if($adapterLogo->isValid('logo2')) { /** .. **/ }

そのようなバリデーターを使用するよりも、フォームを使用してこれを検証する方がはるかに簡単です。次の例を参照してください。

http://samsonasik.wordpress.com/2012/08/31/zend-framework-2-creating-upload-form-file-validation/

于 2013-02-18T15:38:21.923 に答える