【问题标题】:laravel image validation image interventionlaravel 图像验证 图像干预
【发布时间】:2019-01-16 09:50:38
【问题描述】:

我在我的 vue js 组件中有一个文件上传,它在服务器中发送 base64

methods: {
    onFileChange(e) {
        console.log(e.target.files[0]);
        let fileReader = new FileReader();
        fileReader.readAsDataURL(e.target.files[0]);
        fileReader.onload = (e) => {
        this.product.cover_image = e.target.result
       };
   },

<div class="form-group">
    <label for="exampleInputFile">Upload Image of Product</label>
    <input type="file" ref="fileupload" v-on:change="onFileChange" id="exampleInputFile">
</div>

在我的 laravel 控制器中,我使用图像干预通过 Image::make 保存图像

public function store(Request $request){
   $this->validate($request, [
       'name' => 'required|max:255',
       'price' => 'required|numeric',
       ]);
   $image = $request->get('cover_image');
   $name = time().'.' . explode('/', explode(':', substr($image, 0, strpos($image, ';')))[1])[1];
   Image::make($request->get('cover_image'))->save(public_path('cover_images/').$name);
   $product = new Product;
   $product->name = $request->input('name');
   $product->description = $request->input('description');
   $product->price = $request->input('price');
   $product->cover_image = $name;
   if($product->save()) {
          return new ProductsResource($product);
     }
  }

如何在保存之前验证图像?它在 base64 中,我不知道如何在 laravel 上验证它。

【问题讨论】:

标签: php laravel laravel-5


【解决方案1】:

AppServiceProvider 里面我放了自定义验证

public function boot()
{
    Validator::extend('image64', function ($attribute, $value, $parameters, $validator) {
        $type = explode('/', explode(':', substr($value, 0, strpos($value, ';')))[1])[1];
        if (in_array($type, $parameters)) {
            return true;
        }
        return false;
    });

    Validator::replacer('image64', function($message, $attribute, $rule, $parameters) {
        return str_replace(':values',join(",",$parameters),$message);
    });
}

我在validation.php 上放了

'image64' => 'The :attribute must be a file of type: :values.',

现在我可以用它来验证请求了

'image' => 'required|image64:jpeg,jpg,png'

感谢https://medium.com/@jagadeshanh/image-upload-and-validation-using-laravel-and-vuejs-e71e0f094fbb

【讨论】:

    【解决方案2】:

    如果您只想验证上传的文件是否为图像类型:

    $this->validate($request, [
       'name' => 'required|max:255',
       'price' => 'required|numeric',
       'cover_image' => 'required|image'
    ]);
    

    正在验证的文件必须是图像(jpeg、png、bmp、gif 或 svg)

    Laravel 5.6 image validation rule

    【讨论】:

      猜你喜欢
      • 2015-10-31
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多