переименовать файл, который не может быть импортирован с помощью InputFilter - PullRequest
0 голосов
/ 11 октября 2018

Я не совсем уверен, как правильно спросить это.Я импортирую несколько файлов в одном кадре.Имена файлов включают соответствующие системы, к которым относятся файлы.Это работает пока вполне нормально.Но будут файлы без совпадения, потому что система не найдена.Мне нужно пометить их, чтобы пользователь мог проверить.

Моя идея состоит в том, чтобы импортировать эти файлы также на веб-сервер, но в другой каталог.Впоследствии каталог может быть показан пользователю.

My InputFilter выполняет импорт в нужное место для соответствующих файлов.

$inputFilter->add([
            'type'     => 'Zend\InputFilter\FileInput',
            'name'     => 'PAD_Document_Path',  // Element's name.
            'required' => true,    // Whether the field is required.
            'filters'  => [        // Filters.
                    [
                            'name' => \Zend\Filter\File\RenameUpload::class,
                            'options' => [
                                    'use_upload_name'=>true,
                                    'use_upload_extension' => true,
                                    'randomize' => false,
                                    'overwrite' => true,
                                    'target' => './public/files/pads',
                            ],
                    ],
            ],
            'validators' => [      // Validators.
                    [
                            'name' => \Zend\Validator\File\Extension::class,
                            'options' => [
                                    'extension' => 'pdf',
                                    'message' => 'File extension not match',
                            ],
                    ],
                    [
                            'name' => \Zend\Validator\File\MimeType::class,
                            'options' => [
                                    'mimeType' => 'application/pdf',    //'text/xls', 'text/xlsx',
                                    'message' => 'File type not match',
                            ],
                    ],
                    [
                            'name' => \Zend\Validator\File\Size::class,
                            'options' => [
                                    'min' => '1kB',  // minimum of 1kB
                                    'max' => '8MB',
                                    'message' => 'File too large',
                            ],
                    ],
            ]
    ]);

Так что я могу использовать InputFilter также импортировать файлы без совпадения?Если это невозможно, какой путь будет лучшим?

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

Надеюсь, я все правильно объяснил, чтобы все могли понять.

1 Ответ

0 голосов
/ 13 октября 2018

В связи с обсуждением комментариев ниже вопроса, мы пришли к возможному решению.

(пожалуйста, сделайте попытку, иначе добавьте свой собственный ответ, когда вы решите это)


, если мы сделаем шаг назад, прежде чем импортировать.Тогда это точка проверки, если вы хотите переименовать в этот момент, как бы вы это сделали?

Документы показывают вам, как переименовать файлы, такжеустановив целевое местоположение для них.Однако тогда это правило для всех файлов.

Вам следует создать такое правило, чтобы единообразно проверять файлы.Когда вам нужно отправить файлы в определенные места на основе критериев, например, имен файлов, вы должны создать эту логику после проверки формы.Например, в классе Controller.В этом контроллере вы обрабатываете файлы, соответствующие требованиям, в вашем «счастливом потоке» и оставляете во временных те, которые не совпадают.

Если какие-либо файлы не совпадают, вы перенаправляете пользователя в место, где он должен решить, для чего предназначены файлы и / или что с ними делать.Если нет файлов, вы продолжаете в обычном режиме для счастливого потока вашего приложения.

Пример выполнения:

  1. Загружены файлы от A до F.
  2. A & B в порядке, они сопоставлены и перемещены для систем X & Y.

Альтернативный поток для файлов (от C до F), не сопоставленных после 2 выше

  1. Остаток не может быть сопоставлен.
  2. Пользователь перенаправляется на страницу, где он должен выбрать, для файла, файл для X или для Y.
  3. Переместить файлы в качестве исправления к выбранным параметрам
...