php - laravel 图像验证 图像干预
问题描述
我在我的 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 im 控制器中使用图像干预来保存图像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 上验证它。
解决方案
在里面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
推荐阅读
- backstop.js - 出现错误:BackstopJS 的 net::ERR_CONNECTION_REFUSED
- c - 使用结构时,如何将以下汇编代码从编译器翻译成 C?
- javascript - 如何修复链接和我的文本之间的空间?
- python - 有没有关于如何使用数据类和scrapy项目的例子?
- delphi - 如何从 ICONDIR 转换为 GRPICONDIR?
- firebase - 发布应用程序更新以查看使用 admob 的添加是否重要?
- python - list[i][i] 是什么意思?
- python - 带有烧瓶的对话框
- java - 我们可以使用 API 级别 29 构建一个 Eclipse ADT 项目吗?我收到错误“无法构建:未从 SDK 文件夹加载文件 dx.jar”
- python - 使用 Python 将数据 Excel 导出到谷歌表格