我不太确定如何正确地问这个问题。 我一口气导入了几个文件。文件名包括文件所属的匹配系统。到目前为止,效果还不错。 但是将存在不匹配的文件,因为找不到系统。我需要标记它们,以便用户检查。
我的想法是将此文件也导入到Web服务器,但在另一个目录中。目录可以随后显示给用户。
我的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
导入不匹配的文件吗?如果不可能的话,哪种方法是最好的?
另一个想法是根本不导入不匹配的文件,但是随后我需要在客户端系统上重命名它们。那可能是不可能的,不是吗?
我希望我能正确解释它,以便每个人都能理解。
答案 0 :(得分:1)
由于以下问题的评论讨论,我们提出了一个可能的解决方案。
(请试一下,否则解决时请添加您自己的答案)
如果在导入之前回退一步。然后是验证的重点,如果要在此时进行重命名,您将如何做?
The docs还会通过设置文件的目标位置,向您显示如何重命名文件的选项。但是,这是所有文件的规则。
您应创建诸如此类的规则,以统一验证文件。当您需要根据标准将文件发送到特定位置时,例如文件名,那么您应该在表单验证后创建此逻辑。例如在Controller类中。在该Controller中,您可以处理符合您“快乐流程”中要求的文件,并将那些不匹配的文件保留在临时文件中。
如果任何文件都不匹配,则将用户重定向到一个位置,在该位置,他必须决定文件的目标位置和/或如何处理文件。如果没有任何文件,则可以正常处理应用程序。
示例流程:
上述2后不匹配的文件(C至F)的备用流