2016-12-20 50 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。 –

相关问题