代码之家  ›  专栏  ›  技术社区  ›  pia-sophie

重命名无法使用InputFilter导入的文件

  •  0
  • pia-sophie  · 技术社区  · 7 年前

    我不太清楚该怎么问这个问题。 但是会有不匹配的文件,因为找不到系统。我需要标记它们,以便用户可以检查。

    我的想法是将这些文件也导入到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',
                                ],
                        ],
                ]
        ]);
    

    我能用这个吗 输入滤波器 还要导入不匹配的文件吗?如果不可能,哪种方式最好?

    另一个想法是根本不导入不匹配的文件,但是我需要在客户机系统中重命名它们。那可能是不可能的,不是吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   rkeet Aurimas    7 年前

    由于以下问题的讨论,我们得出了一个可能的解决办法。


    如果我们后退一步,在导入之前。现在是验证点,如果此时要重命名,您将如何执行此操作?

    The docs 全部的 文件夹。

    您应该创建这样的规则,以统一验证文件。如果需要根据条件(例如文件名)将文件发送到特定位置,则应在表单验证后创建此逻辑。例如在控制器类中。在该控制器中,您处理与“快乐流”中的需求相匹配的文件,并将不匹配的文件留在临时文件夹中。

    流程示例:

    1. 上传文件A到F。

    上述2之后不匹配的文件(C到F)的备用流

    1. 余数不能匹配。
    2. 用户被重定向到页面,在那里他必须选择,每个文件,如果文件是X或Y。
    推荐文章