0

ビジネスを作成するために、5 つの画像と .csv ファイルをアップロードします。以下の zend バリデーターを使用しました

$upload = new Zend_File_Transfer();
        $upload->addValidator('Count', false, array('min' =>1, 'max' => 6))
               ->addValidator('Size', false, array('max' => '1Mb'))
               ->addValidator('ImageSize', false, array('minwidth' => 50,
                                                        'maxwidth' => 1000,
                                                        'minheight' => 50,
                                                        'maxheight' => 1000));

CSV をアップロードすると、ImageSize が検出されないというエラーが表示されます。.csv ファイルの ImageSize バリデーターをスキップする方法はありますか?

4

2 に答える 2

1

ここでは、高さ 435 ピクセル、幅 175 ピクセルの最初の画像と、高さ 200 ピクセル、幅 200 ピクセルの他のすべての画像を検証する例を示します。

$targetPath = $this->registry->DOC_ROOT.'/public/uploads/images/campersite_user_photo/';

            if(!is_dir($targetPath))
            {
                mkdir($targetPath,'0777');
            }

            $adapter->setDestination($targetPath);

            $first = true;
            $filecheck = '';

            if(isset($asAdminVal['admin_role_id']) && ($asAdminVal['admin_role_id'] == '1' || $asAdminVal['admin_role_id'] == '2'))
            {
                $photoCount = Model_TblCampersiteUserPhotos::getCamperPhotoCount($this->view->snCampId);

                if($photoCount == 0)
                {
                    $j = 1;

                    foreach ($adapter->getFileInfo() as $fields => $info) 
                    {
                        if($info['name'] != '' && $first == true)
                        {
                            $filecheck = $fields;
                        }

                        if($filecheck != '' && $first == true)
                        {
                            $form->photo_path->addValidator('ImageSize', false,array('minwidth' => 435,'minheight' => 175,'messages' => array('fileImageSizeWidthTooSmall' => $this->translate->_('msg_camper_banner_image_file_too_width_height_less'),'fileImageSizeHeightTooSmall' => $this->translate->_('msg_camper_banner_image_file_too_width_height_less'))),$fields);
                            $first = false;
                        }
                        else
                        {
                            $form->photo_path->addValidator('ImageSize', false,array('minwidth' => 200,'minheight' => 200,'messages' => array('fileImageSizeWidthTooSmall' => $this->translate->_('msg_file_too_small'),'fileImageSizeHeightTooSmall' => $this->translate->_('msg_file_too_small'))),$fields);
                        }
                        $fileInfo[$j] = $info;
                        $j++;
                    }
                }
                else
                {
                    $j = 1;
                    foreach ($adapter->getFileInfo() as $fields => $info) 
                    {
                        $form->photo_path->addValidator('ImageSize', false,array('minwidth' => 200,'minheight' => 200,'messages' => array('fileImageSizeWidthTooSmall' => $this->translate->_('msg_file_too_small'),'fileImageSizeHeightTooSmall' => $this->translate->_('msg_file_too_small'))),$fields);
                        $fileInfo[$j] = $info;
                        $j++;
                    }   
                }
            }
            else
            {
                $j = 1;
                foreach ($adapter->getFileInfo() as $fields => $info) 
                {
                    $form->photo_path->addValidator('ImageSize', false,array('minwidth' => 200,'minheight' => 200,'messages' => array('fileImageSizeWidthTooSmall' => $this->translate->_('msg_file_too_small'),'fileImageSizeHeightTooSmall' => $this->translate->_('msg_file_too_small'))),$fields);
                    $fileInfo[$j] = $info;
                    $j++;                   
                }
            }

フォームを検証するには、以下のコードを記述します。

if($form->isValid($formData))
{

}
于 2011-08-31T08:49:48.310 に答える
0

そして、私はそれを行う方法を考え出しました!

$upload = new Zend_File_Transfer();
    $files = $upload->getFileInfo();
    foreach ($files as $fields => $contents)
    {
        if ($fields!= 'filename6')  -- Skipping the validation for csv file
        {
            $upload->addValidator('Count', false, array('min' =>1, 'max' => 6),$fields)
                   ->addValidator('Size', false, array('max' => '1Mb'),$fields)
                   ->addValidator('ImageSize', false, array('minwidth' => 50,
                                                            'maxwidth' => 1000,
                                                            'minheight' => 50,
                                                            'maxheight' => 1000),$fields);
        }
        elseif ($fields == 'filename6') -- To validate only csv file
        {
            $upload->addValidator('Extension', false, 'csv', $fields)
                   ->addValidator('Size', false, array('max' => '1Mb'),$fields);
        }
    }          
于 2011-06-14T20:34:13.633 に答える