Pages

2010年3月20日土曜日

ZendFramework アップした画像をランダムなファイル名へ変更してアップする

現在のベストと思える方法をメモ。

やりたい事は日本ファイル名でもアップされても良いという事とアップされたものが重複する事によって上書きされないようにする事。

class Default_Form_Foo extends Zend_Form
{
    public function init()
    {
        $element = new Zend_Form_Element_File('foo');
        $element
            ->setRequired(false)
            ->setValidators(array(
                array (
                    'validator' => 'Count',
                    'breakChainOnFailure' => true,
                    'options' => array(1),
                ),
                array (
                    'validator' => 'Size',
                    'breakChainOnFailure' => true,
                    'options' => array(20000),
                ),
                array (
                    'validator' => 'IsImage',
                    'breakChainOnFailure' => true,
                    'options' => array('jpeg,jpg,png,gif'),
                ),
            );
        $this->addElement($element, 'imagefile');
     }

    public function isValid($data) {
      
        $oldname = pathinfo($this->foo->getFileName());
      
        do {
            $newname =
                date("ymdHis") . '_' .
                uniqid() . '.' .
                $oldname['extension'];
        } while (
            @file_exists (
                $this->getConfigs()
                    ->tmp
                    ->img . '/' .
                    $filename));

        $this->getElement('foo')
            ->addFilter('Rename', array(
                'target'    =>
                    $this->getConfigs()
                        ->banner
                        ->tmp_path . '/' .
                        $filename,
                'overwrite' => true,
            )
        );
      
        return parent::isValid($data);
    }
}

0 件のコメント:

コメントを投稿

Followers