ZF RenameUpload фильтр не работает

Я пытаюсь загрузить изображение, очень простое. Вот мой файл входного фильтра:

namespace MyNamespace;

use Zend\InputFilter\InputFilter;
use Zend\Filter\StringTrim;
use Zend\Filter\StripTags;
use Zend\Filter\File\RenameUpload;
use Zend\Validator\File\Size;
use Zend\Validator\File\MimeType;

class MyFilter extends InputFilter
{
public function __construct()
{
$this->add(
[
'name' => 'image',
'required' => true,
'filters' => [
[
/* 'name' => RenameUpload::class, */
'name' => 'filerenameupload',
'options' => [
'target' => './data/uploads/images/.ext',
'overwrite' => true,
'randomize' => true,
'use_upload_extension' => true,
]
]
],
'validators' => [
[
'name'    => Size::class,
'options' => [
'max' => '10MB',
],
],
[
'name' => MimeType::class,
'options' => [
'mimeType' => [
'image/jpg',
'image/jpeg',
'image/png'
]
],
],
],
]
);
}
...

Я проверил $request->getFiles()->toArray() и загруженное изображение там. В контроллере я делаю:

$postData = array_merge (
$this->request->getPost()->toArray(),
$this->request->getFiles()->toArray()
);

$form = new MyForm;
$form->setInputFilter(new MyFilter);
$form->setData($postData);

$form->isValid()                      // this returns true.

Когда я проверяю папку загрузки, там ничего нет. Это не проблема файловой системы, поскольку владелец папки совпадает с пользователем, работающим с Apache; и разрешения 755.

Я также заметил, удаляю ли я папку, в которую предполагается писать, $form->isValid() все еще возвращается true,

Что я делаю неправильно?

0

Решение

Укажите правильный каталог загрузки, если вы хотите использовать RenameUpload фильтр. Как следующее

'./data/upload/images/'

использование array_merge_recursive () вместо array_merge (). Так как array_merge () orverrides аналогичные ключи массива (просто сохраняет последний).

И это загрузит изображение к цели, назначенной RenameUpload фильтр.

<?php

...

if($form->isValid()) {
// Move uploaded file to the assigned directory.
$data = $form->getData();

// Do other stuff
...
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]