ZF2的文件上传模块

时间:2012-07-27 17:05:38

标签: file-upload module zend-framework2

我想将文件上传功能集成到使用ZF2编码的应用程序中。我在互联网上找到了一些材料(link1link2),但每次通过当前控制器中的表单处理文件上传时。

在我的应用程序中,有许多控制器,用户可以从中上传文件,我还对每个上传的文件进行了大量处理(例如授权,创建缩略图,收集文件大小等信息,图像维度,文档中的页数... )因此我想将与文件上传相关的代码集中在一个地方。

我以为我可以从不同的控制器渲染文件上传表单,但让form action始终指向相同的URL(例如/uploads)并拥有我的例如,路由将这些文件发送到Uploads模块。我在ZF2ZF2 modules site上找不到google文件上传模块的尝试失败,所以我认为这可能不是一个好主意,因此我的问题是:

在一个控制器中生成文件上传表单以及处理控制器中文件上载的限制(我将无法使用哪些有用功能)会有什么限制?一个单独的模块?

1 个答案:

答案 0 :(得分:-1)

要创建文件上传表单字段,您需要执行以下操作:

use Zend\Form\Element;
use Zend\Form\Form;

$file = new Element('file');
$name->setAttributes(array(
    'type' => 'Zend\Form\Element\File',
    'label' => 'Upload file',
));

$form = new Form('myform');
$form->add($file);

在观点方面:

<?php
$form->setAttribute('action', $this->url('one_of_the_routes'));
$form->setAttribute('method', 'post');
$form->setAttribute('enctype', 'multipart/form-data');
?>

<?php echo $this->form()->openTag($form); ?>
<p>
    <?php echo $this->formLabel($form->get('file')); ?>
    <?php echo $this->formInput($form->get('file')); ?>
</p>
<?php echo $this->form()->closeTag(); ?>

目前验证器方面存在问题(至少在我最后检查时),但我相信它很快就会修复。这意味着我只是从模型中接近$ _FILES。

注意:http://framework.zend.com/issues/browse/ZF2-327

http://packages.zendframework.com/docs/latest/manual/en/modules/zend.form.quick.start.html

阅读该男子