【问题标题】:square image in yii2yii2中的方形图像
【发布时间】:2016-01-25 12:44:09
【问题描述】:

我想强制用户上传方形图片。我的意思是正方形的宽度和高度相等。 在 yii2 的核心验证器中,我们有 image 类型的定义:

['primaryImage', 'image', 'extensions' => 'png, jpg',
        'minWidth' => 100, 'maxWidth' => 1000,
        'minHeight' => 100, 'maxHeight' => 1000,
],

现在,如果我想使用支持客户端验证器的自定义验证器,我应该怎么做。请我想限制用户上传我的强制宽度和高度,只是想强制该图像是方形的。

【问题讨论】:

    标签: php validation yii2


    【解决方案1】:

    你可以扩展ImageValidator:

    class ImageSquareValidator extends ImageValidator
    {
        /**
         * @inheritdoc
         */
        protected function validateImage($image)
        {
            if (false === ($imageInfo = getimagesize($image->tempName))) {
                return [$this->notImage, ['file' => $image->name]];
            }
    
            list($width, $height) = $imageInfo;
    
            if ($width !== $height) {
                return [Yii::t('yii', 'The image "{file}" is not square.'), ['file' => $image->name]];
            }
    
            return parent::validateImage($image);
        }
    }
    

    在客户端验证中,您可以使用this 示例。

    【讨论】:

    • 感谢您的回复,但文件 api 仅适用于某些浏览器。除了文件api还有其他方法吗?
    • @BehzadHassani 最可靠的方法是通过 ajax 将文件上传到服务器并在服务器端进行验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多