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.
업로드 폴더를 확인할 때 아무 것도 없습니다. 폴더 소유자가 apache를 실행하는 사용자와 동일하기 때문에 파일 시스템 문제는 아닙니다. 권한은 755입니다.
쓸 곳이있는 폴더를 삭제하면 $form->isValid()
은 여전히 true
을 반환합니다.
내가 뭘 잘못하고 있니?
문제는'isValid()'가 아니라'getData()'가 호출 된 후 "움직이는"get이 완료된 것 같습니다. –
예! 당신 말이 맞아요! 나는 ** array_merge_recursive() **에 대해 말했습니다. 왜냐하면 ** 키 **가 병합 할 배열과 비슷하다면 모든 값을 유지하기 때문입니다. – unclexo