CakePHP поле загрузки нескольких файлов, загружая только одно изображение - PullRequest
3 голосов
/ 09 марта 2012

Я пытаюсь загрузить некоторые файлы, используя поле множественной загрузки файлов.Информация POST отправляется правильно и выглядит следующим образом:

Array
(
    [Uploads] => Array
        (
            [photos] => Array
                (
                    [0] => Array
                        (
                            [name] => image - Copy - Copy.jpg
                            [type] => image/jpeg
                            [tmp_name] => /tmp/phpALAMwT
                            [error] => 0
                            [size] => 60892
                        )

                    [1] => Array
                        (
                            [name] => image - Copy.jpg
                            [type] => image/jpeg
                            [tmp_name] => /tmp/phpoIGtta
                            [error] => 0
                            [size] => 60892
                        )

                    [2] => Array
                        (
                            [name] => image.jpg
                            [type] => image/jpeg
                            [tmp_name] => /tmp/phpERTogu
                            [error] => 0
                            [size] => 60892
                        )

                )

И я перебираю и вставляю каждый из них в базу данных, затем загружаю их, используя идентификатор из базы данных, например:

// Upload Photos
if (!empty($this->request->data['Uploads']['photos'][0]['tmp_name'])){

    foreach($this->request->data['Uploads']['photos']as $photo){

        $property_id = $this->request->data['Property']['ID'];
        $file_name = $photo['name'];
        $file_size = $photo['size'];
        $file_ext = pathinfo($photo['name'], PATHINFO_EXTENSION);

        // Save to DB
        $this->Property->PropertyImage->save(array(
            'PropertyImage' => array("Live"=>1, 'Number'=>99, "Type"=>'L', "FileType"=>$file_ext, "PropertyID"=>$property_id, 'Source'=>$file_name, 'Size=>'.$file_size)
        ));

        // Upload
        $id = $this->Property->PropertyImage->getLastInsertID();
        $path = intval($id/1000) . '/' . $id . '.' . $file_ext;
        move_uploaded_file($photo['tmp_name'], $_SERVER['DOCUMENT_ROOT'].'/imgp/F/'.$path);

    }
}

Но только одно изображение помещается в базу данных и загружается каждый раз, не могу понять, почему внешний вид работает неправильно.

Есть идеи?Спасибо.

1 Ответ

2 голосов
/ 09 марта 2012

До того, как вы позвонили на линию, сохраните ()

$this->Property->PropertyImage->save(...)

вызов

$this->Property->PropertyImage->create();

, чтобы сказать модели написать новую запись вместо продолжения работы с только что сохраненной.

...