CakePHP 2.X同时上传多个文件

时间:2013-10-17 04:29:58

标签: php cakephp file-upload request multiple-files

上传多个文件时,你应该如何使用“CakePhpRequest”数组?

我有这个结果

CakeRequest Object
(
[params] => Array
    (
        [plugin] => 
        [controller] => users
        [action] => upload
        [named] => Array
            (
            )

        [pass] => Array
            (
            )

        [form] => Array
            (
                [files] => Array
                    (
                        [name] => Array
                            (
                                [0] => php.exe
                                [1] => php.gif
                                [2] => php.ini
                                [3] => php.ini-development
                                [4] => php.ini-production
                            )

                        [type] => Array
                            (
                                [0] => application/x-msdownload
                                [1] => image/gif
                                [2] => application/octet-stream
                                [3] => application/octet-stream
                                [4] => application/octet-stream
                            )

                        [tmp_name] => Array
                            (
                                [0] => C:\xampp\tmp\php455E.tmp
                                [1] => C:\xampp\tmp\php456E.tmp
                                [2] => C:\xampp\tmp\php456F.tmp
                                [3] => C:\xampp\tmp\php4570.tmp
                                [4] => C:\xampp\tmp\php4571.tmp
                            )

                        [error] => Array
                            (
                                [0] => 0
                                [1] => 0
                                [2] => 0
                                [3] => 0
                                [4] => 0
                            )

                        [size] => Array
                            (
                                [0] => 73728
                                [1] => 2523
                                [2] => 78907
                                [3] => 72908
                                [4] => 72941
                            )

                    )

            )

    )

[...] other data

我是否必须计算已上传的文件数量,然后使用数字进行迭代?

如果输出是这样的话会不会更容易?

CakeRequest Object
(
[params] => Array
    (
        [plugin] => 
        [controller] => users
        [action] => upload
        [named] => Array
            (
            )

        [pass] => Array
            (
            )

        [form] => Array
            (
                [files] => Array
                    (
            [0] => Array(
                [name] => php.exe
                [type] => application/x-msdownload
                [tmp_name] => C:\xampp\tmp\php455E.tmp
                [error] => 0
                [size] => 73728
            )
            [1] => Array(
                [name] => php.gif
                [type] => image/gif
                [tmp_name] => C:\xampp\tmp\php456E.tmp
                [error] => 0
                [size] => 2523
            )
            [...] more data

                    )

            )

    )

[...] other data

这样我只需要使用foreach($ files as $ file)

抱歉我的英文不好

2 个答案:

答案 0 :(得分:4)

请将字段名称指定为。

<?php
  echo $this->Form->input('files.', array('type' => 'file', 'multiple')); // dont forgot to put . after the name
?>

答案 1 :(得分:0)

在cake 3.x中使用输入名称末尾的点会抛出一个空属性错误,你必须根据我的经验使用[],否则解决方案是相同的,按照:http://bakery.cakephp.org/2012/01/31/HTML-5-Multiple-File-Upload-With-Cake.html