我正在使用Symfony3在网站上工作,您可以为您的个人资料上传图片。但我想检查图像是否真的是图像,文件是否小于2MB。
输入元素已经有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
?
提前谢谢。
答案 0 :(得分: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目录上重命名,然后移动(如果需要,可以重命名)。