0

通常のファイルアップロード要素を使用して、ファイルをアップロードして検証しています。しかし最近、Zend_file_tranfer を実装すると、ファイルをより細かく制御できることがわかりました。

私はインターネットのいたるところで検索され、簡単な例を探していますが、要素にどのようにリンクされているかを示しているものはありません。Zend_File_Transfer のオブジェクトを作成する場所と、それを要素に追加する方法がわかりません。私は基本的にそれを使用する方法を知りません。

zend_form と Zend_Controller_Action の両方で zend_File_tranfers を使用する初心者の例を教えてください。

4

3 に答える 3

2

知らせる:

class Application_Form_YourFormName extends Zend_Form
{
    public function __construct()
    {
        parent::__construct($options);
        $this->setAction('/index/upload')->setMethod('post');
        $this->setAttrib('enctype', 'multipart/form-data');

        $upload_file = new Zend_Form_Element_File('new_file');
        $new_file->setLabel('File to Upload')->setDestination('./tmp');
        $new_file->addValidator('Count', false, 1);
        $new_file->addValidator('Size', false, 67108864);
        $new_file->addValidator('Extension', false, Array('png', 'jpg'));

        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setLabel('Upload');

        $this->addElements(array($upload_file, $submit));
    }
}

コントローラーで:

class Application_Controller_IndexController extends Zend_Controller_Action
{
    public function uploadAction()
    {
        $this->uform = new Application_Form_YourFormName();
        $this->uform->new_file->receive();
        $file_location = $this->uform->new_file->getFileName();

        // .. do the rest...
    }
}
于 2011-10-12T13:56:43.090 に答える
1

フォームを作成するときは、フォームで次のようにします。

$image = $this->getElement('image');
//$image = new Zend_Form_Element_File();
$image->setDestination(APPLICATION_PATH. "/../data/images"); //!!!!
$extension = $image->getFileName();
if (!empty($extension))
    {
        $extension = @explode(".", $extension);
        $extension = $extension[count($extension)-1];
        $image->addFilter('Rename', sprintf('logo-%s.'.$extension, uniqid(md5(time()), true)));
    }

$image
    ->addValidator('IsImage', false, $estensioni)//doesn't work on WAMPP/XAMPP/LAMPP
    ->addValidator('Size',array('min' => '10kB', 'max' => '1MB', 'bytestring' => true))//limit to 200k
    ->addValidator('Extension', false, $estensioni)// only allow images to be uploaded
    ->addValidator('ImageSize', false, array(
            'minwidth' => $img_width_min,
            'minheight' => $img_height_min,
            'maxwidth' => $img_width_max,
            'maxheight' => $img_height_max
            )
        )
    ->addValidator('Count', false, 1);// ensure that only 1 file is uploaded
// set the enctype attribute for the form so it can upload files
$this->setAttrib('enctype', 'multipart/form-data');

次に、コントローラーでフォームを送信すると、次のようになります。

if ($this->_request->isPost() && $form->isValid($_POST)) {
            $data = $form->getValues();//also transfers the file
....
于 2011-10-12T13:56:19.897 に答える
0

ここにあなたを助けることができるいくつかのリンクがあります.

Zend ドキュメンテーション

SOに関する同じ質問

ステップ バイ ステップ チュートリアル

別の便利なリンク

于 2011-10-12T13:43:26.570 に答える