首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel图片上传验证

问Laravel图片上传验证
EN

Stack Overflow用户
提问于 2017-03-06 12:50:15
回答 4查看 3.4K关注 0票数 0

我正在尝试使用laravel验证来验证上传的文件,但遇到了问题。

下面是我的代码:

代码语言:javascript
复制
$this->validate($request, [
        'image' =>'mimetypes:image/jpeg,image/png,image/gif',

        ]);

        $avatar = $request->file('image');

        $fileName = time(). '.' . $avatar->getClientOriginalExtension();
        Image::make($avatar)->resize(300,300)->save( public_path('uploads/avatar/' . $fileName));

        $user = Auth::user();
        $user->avatar = $fileName;
        $user->save();

问题是当我使用bmp文件时,我得到这个错误:Gd error

我正在使用干预图像包。我不想切换到imagick驱动程序。

有什么想法吗?

EN

回答 4

Stack Overflow用户

发布于 2017-03-06 15:59:06

查看干预包代码,您可以看到processBmp函数的两个实现:

干预/Image/Gd/Encoder.php:

代码语言:javascript
复制
protected function processBmp()
{
    throw new \Intervention\Image\Exception\NotSupportedException(
        "BMP format is not supported by Gd Driver."
    );
}

干预/Image/Imagick/Encoder.php:

代码语言:javascript
复制
protected function processBmp()
{
    $format = 'bmp';
    $compression = \Imagick::COMPRESSION_UNDEFINED;
    $imagick = $this->image->getCore();
    $imagick->setFormat($format);
    $imagick->setImageFormat($format);
    $imagick->setCompression($compression);
    $imagick->setImageCompression($compression);
    return $imagick->getImagesBlob();
}

因此,我认为可以肯定地说,您不能使用GD驱动程序,只能使用imagick。

票数 0
EN

Stack Overflow用户

发布于 2017-03-06 16:11:16

只需使用"intervention/image": "~2"或将您的驱动程序更改为Imagick。GD本身并不支持BMP,这是一个已知的问题。您可以查看issue page on github以了解详细信息。

票数 0
EN

Stack Overflow用户

发布于 2017-03-06 16:17:13

为什么不对镜像image使用Laravel自定义规则

代码语言:javascript
复制
$this->validate($request, [
        'image' =>'image',

        ]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42617754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档