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

如何在CakePHP中进行基于表单的文件上传?,cakephp,forms,file-upload,Cakephp,Forms,File Upload,我调查这件事已经有一段时间了,还没弄明白。基本上,我有一个为我的模型添加页面,您可以从URL或文件上传添加地图。我已经在中获得了所有字段和验证,但是如何以及在何处管理上载的文件??一定有一些简单的方法可以做到这一点。谢谢 首先,您的表单需要设置为允许文件上载 <?php echo $form->create(Model, array('type' => 'file')); ?> 这些只是基础,所以一定要仔细研究,找到最适合您需要的解决方案。注意:MeioUploadBe

我调查这件事已经有一段时间了,还没弄明白。基本上,我有一个为我的模型添加页面,您可以从URL或文件上传添加地图。我已经在中获得了所有字段和验证,但是如何以及在何处管理上载的文件??一定有一些简单的方法可以做到这一点。谢谢

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

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

这些只是基础,所以一定要仔细研究,找到最适合您需要的解决方案。

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

除了已经给出的很好的答案之外,我还想提示一下,目前由维护,这对我自己的CakePHP项目有很大帮助


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

您可以使用Zend组件来处理文件上载。我的网站上有一个很好的例子:

啊,谢谢,已经更新了。文本区域不检查我的语法。;)这是我如何实现移动上传文件功能的:移动上传文件($\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;你好,Geo。我对你的博客文章发表了评论。请提及您在示例中使用的CakePHP版本。谢谢
function beforeSave($created) {
    extract($this->data[Model][field]);
    if ($size && !$error) {
        move_uploaded_file($tmp_name, destination);
        $this->data[Model][field] = destination;
    }
    return true;
}