cakephp rest api 多文件上传

cakephp rest api multiple file uploading

我试图通过 REST APIcakephp V2.3 上传多个文件。我是 运行 api chrome 的 postman 插件。 问题是文件数组的格式。下面是我得到的格式。很难从上面的数组中获取数据。请指导我如何设置键以获取标准格式的值。

Array
(
    [Reports] => Array
        (
            [name] => Array
                (
                    [0] => Chrysanthemum.jpg
                    [1] => Jellyfish.jpg
                )

            [type] => Array
                (
                    [0] => image/jpeg
                    [1] => image/jpeg
                )

            [tmp_name] => Array
                (
                    [0] => /tmp/phpDZoRzW
                    [1] => /tmp/phpVyb98b
                )

            [error] => Array
                (
                    [0] => 0
                    [1] => 0
                )

            [size] => Array
                (
                    [0] => 879394
                    [1] => 775702
                )

        )

)

我不完全确定我是否答对了你的问题,但我认为一个问题在于数据格式。我假设您使用的是 savemany 方法。数据应采用以下格式:

$data = array(
    array('name' => 'Chrysanthemum.jpg', 'type' => 'image/jpeg', 'tmp_name' => '/tmp/phpDZoRzW', 'error' => 0, 'size' => 879394),
    array('name' => 'Jellyfish.jpg', 'type' => 'image/jpeg', 'tmp_name' => '/tmp/phpVyb98b', 'error' => 0, 'size' => 775702)
);

基本上,您是逐个字段而不是逐个记录地提供数据。我不认为蛋糕可以正确处理这个。

要获取所需格式的数据,您可以遍历数据或使用 cakephp 提供的便捷方法 Hash,例如通过在所需的 keys/values.

上使用 extract

以正确的格式接收数据

如果您能够更改提交表单,您可以像这样命名文件输入字段。结果应该是所需的格式。

<input type="file" name="Report.0">
<input type="file" name="Report.1">

这将导致格式:

   [Reports] => Array
        (
            [0] => Array
                (
                    [name] => 'Chrysanthemum.jpg'
                    [type] => 'image/jpeg'
                )
            [1] => Array
                (
                    [name] => 'Jellyfish.jpg'
                    [type] => 'image/jpeg'
                )
        )

不过,您应该使用 MODELNAME.{n}.FIELDNAME 作为 Cakephp 中表单字段的命名。因此,如果 reports 是您的模型,那么为您的文件字段设置一个字段名称是有意义的。