Zend表单和动态文件上传

时间:2010-04-09 23:20:22

标签: image validation zend-framework file-upload zend-form

您好我正在尝试使用Zend_Form创建一个表单,该表单将使我的用户能够将无限数量的文件上传到我的网站,这是通过javascript完成的。​​

这样的东西
<script type="text/javascript">
$(document).ready(function(){
    var image_uploade_i = 0;
    $('#upload_more').click(function() {
        image_uploade_i++;
        $('#upload_list').append('<div id="image_uploade_id_'+image_uploade_i+'" style="display: none;"><input type="file" name="image[]" /><br /></a>');
        $('#image_uploade_id_'+image_uploade_i).slideDown('slow');
    });
});
</script>
<?=$this->translate('Add images')?>
<form action="" method="post" enctype="multipart/form-data">
    <div id="upload_list">
        <input type="file" name="image[]" /><br />
        <input type="file" name="image[]" /><br />
        <input type="file" name="image[]" /><br />
    </div>
    <a href="#" id="upload_more"><?=$this->translate('Upload another image')?></a><br />
    <input type="submit" name="image_uploade" value="<?=$this->translate('Upload images')?>" />
</form>

但是我无法知道如何用Zend_From创建这样的东西,我想在这个问题上使用Zend_Form的唯一原因是验证uploadet文件。

    $element = new Zend_Form_Element_File('image');
    $element->setRequired(true)
            ->setLabel('Profile image')
            ->setDestination($store)
            ->setValueDisabled(true)
            ->addValidator(new Zend_Validate_File_ImageSize(array(
                                        'minheight' => 100, 'minwidth' => 150,
                                        'maxheight' => 1920, 'maxwidth' => 1200)))
            // File must be below 1.5 Mb
            ->addValidator(new Zend_Validate_File_FilesSize(array('max' => 1572864)))
            ->addValidator(new Zend_Validate_File_IsImage());

如果有任何一个可以帮助我设置它,我会非常满意:D

1 个答案:

答案 0 :(得分:1)

$this->setAttrib('enctype', 'multipart/form-data');
$this->addElement('file', 'files', array(
    'label'         => 'Pictures',
    'validators'    => array(
        array('Count', false, array('min'=>1, 'max'=>3)),
        array('Size', false, 102400),
        array('Extension', false, 'jpg,png,gif')
    ),
    'multiFile'=>3,
    'destination'=>APPLICATION_PATH . '/tmp'
));

所以尝试setMultiFile并可能使用Count验证器来保持限制。

我从以下来源编译了此示例:http://framework.zend.com/manual/en/zend.form.standardElements.html#zend.form.standardElements.file