2016-12-20 1 views
0

Symfony3를 사용하는 사이트에서 작업 중이며 프로필에 사용할 이미지를 업로드 할 수 있습니다. 하지만 이미지가 실제로 이미지이고 파일이 2MB 미만인지 확인하고 싶습니다.symfony3에서 파일 변수의 경로를 얻는 방법

입력 요소에는 이미 accept='image/*' 속성이 있으므로 서버 측만 제 질문입니다. 이미지가 2메가바이트에 비해 정말 이미지 작은 경우 여기

내가 확인하기 위해 사용하는 코드입니다 :

if(getimagesize($user->getAvatarFile()) !== false) { 
    if ($organisation->getAvatarFile()->getSize() > 2000000){ 
     $this->addFlash('error', "Image too large!"); 
    } 
} else { 
    $this->addFlash('error', "File is not an image!"); 
} 

avatarFile 실제로 사용자에서 해당 파일이지만, 어떻게 그것이 경로 내가 사용할 수있어받을 수 있나요 getimagesize?

미리 감사드립니다.

답변

1

에 대한 symfony 문서를 확인해야합니다 (mimeType을 제외한 Image과 동일).

유용 할 수있는 몇 가지 제약 조건이 있습니다 (maxSize).

use Symfony\Component\Validator\Constraints as Assert; 

class User 
{ 
    /** 
    * @Assert\Image(
    *  maxSize = "2M", 
    *  maxSizeMessage= "The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}." 
    *) 
    */ 
    protected $AvatarFile; 
} 

편집 : 당신은 전에 이동, 파일 경로를 얻고 싶은 경우에, 당신은 getClientOriginalName 기능을 사용할 수 있습니다. 업로드 할 때/tmp 디렉토리에서 파일의 이름이 바뀌고 이동 된 다음 필요에 따라 이름이 바뀌므로 전체 파일 경로를 반환하지 않습니다.

+0

좋아, 해보겠습니다. 그것이 효과가 있다면 나는 당신을 당장 실망 시키겠다. 고맙습니다. – Mason

+0

업로드하고 양식을 제출할 때 여전히 경고 : POST 내용 - 길이 5516431 바이트가 라인 0의 알 수 없음에서 3145728 바이트의 제한을 초과합니다. "' – Mason

+1

이 메시지가 표시되면 5.516.431 > 3.145.728. 따라서 오류가 있습니다. 업로드를 위해 무엇을 시도했으며 어떤 크기입니까? 또한 php.ini 파일의 업로드 크기에도 한계가 없음을 확인하십시오. EDIT : php ini에서 chech 값은'upload_max_filesize'와'post_max_size'입니다. 아파치를 다시 시작하는 것을 잊지 마라. –

관련 문제