2016-12-20 49 views
0

我正在使用Symfony3的網站上工作,您可以上傳圖像作爲您的配置文件。但是我想檢查一下圖像是否真的是圖像,如果文件小於2MB。如何從Symfony3中的文件變量中獲取路徑

輸入元素已經有accept='image/*'屬性,所以它只是服務器端的我的問題。

下面是我用它來檢查代碼,如果圖像大於2MB少一個真正的形象:

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

您應該檢查關於File的symfony文檔(它與Image相同,但mimeType除外)。

有一些限制,如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字節超過3145728字節的限制在第0行的未知數 – Mason

+1

看到這個消息,5.516.431 > 3.145.728。所以有一個錯誤。您嘗試上傳了哪些內容以及哪種尺寸?另外,請確保你的php.ini的上傳大小也沒有下限。編輯:在你的PHP ini,chech values'upload_max_filesize'和'post_max_size'。之後不要忘記重啓apache。 –

相關問題