如何从Symfony3

时间:2016-12-20 13:37:58

标签: php file path upload symfony

我正在使用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

提前谢谢。

1 个答案:

答案 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目录上重命名,然后移动(如果需要,可以重命名)。