如何在CakePHP中进行基于表单的文件上传?

时间:2009-08-17 20:32:07

标签: cakephp forms file-upload

我一直在研究这个问题并且无法理解。基本上我有一个我的模型的添加页面,您可以从URL或文件上传添加地图。我有所有的字段和验证,但我如何以及在哪里管理上传的文件?必须有一些简单的方法来做到这一点。谢谢!

3 个答案:

答案 0 :(得分:20)

首先,您的表单需要设置为允许上传文件。

<?php echo $form->create(Model, array('type' => 'file')); ?>

这将允许任何文件输入实际使用$form->file(field)$form->input(field, array('type' => 'file'))将文件上传到您的服务器。

文件上传后,您应该处理模型中的所有其他内容:

function beforeSave($created) {
    extract($this->data[Model][field]);
    if ($size && !$error) {
        move_uploaded_file($tmp_name, destination);
        $this->data[Model][field] = destination;
    }
    return true;
}

这些只是基础知识,所以一定要找到最适合您需求的解决方案。

答案 1 :(得分:0)

注意: MeioUploadBehavior已被弃用。相反, jrbasso 会建议Upload Plugin

除了已经给出的好答案之外,我想暗示MeioUploadBehavior,目前由jrbasso at github维护,这对我自己的CakePHP项目有很大的帮助。

您只需使用$actsAs字段将行为添加到模型中,同时指定任何自定义首选项。然后在数据库中创建必要的字段(由提供的文档详细描述),或者将模型配置为不使用任何数据库表。最后在添加页面中设置表单,也在提供的文档中进行了描述。然后,这种行为将为您完成其余的工作。

答案 2 :(得分:0)

您可以使用Zend Components来处理文件上传。我的网站上有一个很好的例子: CakePHP file upload using Zend Components