簡體   English   中英

ZF RenameUpload過濾器不起作用

[英]ZF RenameUpload filter not working

我正在嘗試上傳圖片,非常基本。 這是我的輸入過濾器文件:

namespace MyNamespace;

use Zend\InputFilter\InputFilter;
use Zend\Filter\StringTrim;
use Zend\Filter\StripTags;
use Zend\Filter\File\RenameUpload;
use Zend\Validator\File\Size;
use Zend\Validator\File\MimeType;

class MyFilter extends InputFilter 
{
    public function __construct()
    {
        $this->add(
            [
                'name' => 'image',
                'required' => true,
                'filters' => [
                    [
                        /* 'name' => RenameUpload::class, */
                        'name' => 'filerenameupload',
                        'options' => [
                            'target' => './data/uploads/images/.ext',
                            'overwrite' => true,
                            'randomize' => true,
                            'use_upload_extension' => true,
                        ]
                    ]
                ],
                'validators' => [
                    [
                        'name'    => Size::class,
                        'options' => [
                            'max' => '10MB',
                        ],
                    ],
                    [
                        'name' => MimeType::class,
                        'options' => [
                            'mimeType' => [
                                'image/jpg',
                                'image/jpeg',
                                'image/png'
                            ]
                        ],
                    ],
                ],
            ]
        );
    }
...

我檢查了$request->getFiles()->toArray() ,上傳的圖像在那里。 在控制器中,我這樣做:

$postData = array_merge (
    $this->request->getPost()->toArray(),
    $this->request->getFiles()->toArray()
);

$form = new MyForm;
$form->setInputFilter(new MyFilter);
$form->setData($postData);

$form->isValid()                      // this returns true.

當我檢查上載文件夾時,什么都沒有。 這不是文件系統問題,因為文件夾所有者與運行apache的用戶相同。 權限為755。

我還注意到,如果我刪除了應該寫入的文件夾,則$form->isValid()仍會返回true

我究竟做錯了什么?

如果要使用RenameUpload篩選器,請提供正確的上傳目錄。 像下面

'./data/upload/images/'

使用array_merge_recursive()代替array_merge() 因為array_merge()遍歷了相似的數組鍵(只保留最后一個)。

然后會將圖像上傳到由RenameUpload過濾器分配的目標。

<?php

...

if($form->isValid()) {
    // Move uploaded file to the assigned directory.
    $data = $form->getData();

    // Do other stuff
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM