0
我想上傳一個非常基本的圖像。這是我的輸入過濾器文件:ZF RenameUpload過濾器不工作
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.
當我檢查uploads文件夾,什麼都沒有。這不是文件系統問題,因爲文件夾所有者與運行apache的用戶相同;和權限是755.
我也注意到如果我刪除它想要寫入的文件夾,$form->isValid()
仍然返回true
。
我在做什麼錯?
這個問題似乎是調用'getData()'而不是'isValid()'後的「移動」get操作。 –
是的!你是對的!我已經說過** array_merge_recursive()**,因爲如果任何**鍵**與您正在合併的數組相似,它將保留所有值。 – unclexo