![](/img/trans.png)
[英]Zend Framework 2 - get the new filename when uploading using a validator for inputfilter
[英]rename file which couldn't be imported using InputFilter
我不太確定如何正確地問這個問題。 我一口氣導入了幾個文件。 文件名包括文件所屬的匹配系統。 到目前為止,效果還不錯。 但是將存在不匹配的文件,因為找不到系統。 我需要標記它們,以便用戶檢查。
我的想法是將此文件也導入到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
導入不匹配的文件嗎? 如果那不可能,那是最好的方法?
還有一個想法是根本不導入不匹配的文件,但是隨后我需要在客戶端系統上重命名它們。 那可能是不可能的,不是嗎?
我希望我能正確地解釋它,以便每個人都能理解。
由於以下問題的評論討論,我們提出了一個可能的解決方案。
(請試一試,否則在解決時添加自己的答案)
如果我們退后一步,則在導入之前。 然后是驗證的重點,如果要在此時進行重命名,您將如何做?
該文檔還通過設置文件的目標位置,向您展示了如何重命名文件的選項。 但是,這是所有文件的規則。
您應該創建諸如此類的規則,以統一驗證文件。 當您需要根據標准(例如文件名)將文件發送到特定位置時,則應在表單驗證之后創建此邏輯。 例如在Controller類中。 在該Controller中,您可以處理符合您“快樂流程”中要求的文件,並將那些不匹配的文件保留在臨時文件中。
如果有任何不匹配的文件,則將用戶重定向到他必須確定文件目的地和/或如何處理文件的位置。 如果沒有任何文件,則可以正常處理應用程序。
流程示例:
上述2后不匹配的文件(C至F)的備用流
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.