Zend framework 重命名无法';不能使用InputFilter导入
我不太清楚如何恰当地问这个问题。 我一次导入几个文件。文件名包括文件所属的匹配系统。到目前为止效果还不错。 但是会有不匹配的文件,因为找不到系统。我需要标记它们,以便用户可以检查 我的想法是将这些文件也导入到Web服务器,但要导入到不同的目录中。之后可以向用户显示该目录 MyZend framework 重命名无法';不能使用InputFilter导入,zend-framework,zend-form,zend-framework3,zend-inputfilter,Zend Framework,Zend Form,Zend Framework3,Zend Inputfilter,我不太清楚如何恰当地问这个问题。 我一次导入几个文件。文件名包括文件所属的匹配系统。到目前为止效果还不错。 但是会有不匹配的文件,因为找不到系统。我需要标记它们,以便用户可以检查 我的想法是将这些文件也导入到Web服务器,但要导入到不同的目录中。之后可以向用户显示该目录 MyInputFilter将导入到匹配文件的正确位置 $inputFilter->add([ 'type' => 'Zend\InputFilter\FileInput',
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
也导入不匹配的文件吗?如果不可能,哪种方式最好
另一个想法是根本不导入不匹配的文件,但是我需要在客户端系统中重命名它们。那可能是不可能的,不是吗
我希望我能正确地解释它,这样每个人都能理解。由于以下问题的讨论,我们找到了一个可能的解决方案 (请试一试,否则在解答时添加您自己的答案)
如果我们在导入之前后退一步。然后是验证点,如果要在此时重命名,您将如何执行此操作 显示如何重命名文件的选项,还可以为文件设置目标位置。但是,这是所有文件的规则 您应该创建这样的规则,以统一验证文件。如果需要根据条件(例如文件名)将文件发送到特定位置,则应在表单验证后创建此逻辑。例如,在控制器类中。在该控制器中,您处理与“快乐流”中的需求相匹配的文件,并将不匹配的文件保留在临时文件夹中 如果有任何文件不匹配,则将用户重定向到一个位置,用户必须在该位置决定文件的目的地和/或处理方式。如果没有任何文件,您可以正常运行应用程序 流程示例:
我认为这是对InputFilter的错误使用,InputFilter用于验证上传的文件是否正确,而不是如何处理它。在我看来,您必须在控制器或文件处理服务中处理此问题。然后,您可以询问处理此操作的任何逻辑,以查看是否有任何逻辑符合需要进一步操作的标准,如果符合,则执行此操作,否则继续执行下一步。但建议InputFilter在成功的情况下提供filecopy的目标。(Zend教程)。你们对我有什么想法吗,如何处理不匹配的文件?这是真的,因为下载(客户端上传,服务器下载)需要一个(tmp)目的地。然而,将它们全部放在一个tmp位置(
target
选项),然后用一些逻辑确定哪些匹配,哪些不匹配,这不是更简单吗?在筛选器和/或验证器选项中执行此操作是将它们用于它们不是为之设计的目的。可以理解,但如果我们在导入之前后退一步。这就是验证点,如果你想在这一点上重命名,你会怎么做?是的,有,但这为所有文件设置了规则。因此,我将创建一个规则,然后在表单验证之后,处理收到的内容。大概在控制器中,我会区分文件匹配条件(如您在问题的第一段中所述)和不匹配条件。我会在“快乐流”中处理的第一个问题,这是我最初期望的。后者将保留在tmp(上传)目录(1/2)中