Laravel 表单验证:限制上传图片宽度和高度
在Laravel中,可以使用表单请求验证来限制上传图片的宽度和高度。以下是一个示例代码,展示了如何创建一个自定义的表单请求来实现这个需求:
首先,创建一个新的表单请求类:
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\UploadedFile;
use Intervention\Image\Facades\Image;
class StoreImageRequest extends FormRequest
{
public function authorize()
{
// 验证逻辑,例如检查用户是否已认证
return auth()->check();
}
public function rules()
{
return [
'image' => [
// 其他规则...
'required',
'image',
'dimensions:min_width=100,min_height=100', // 设置图片最小宽度和高度
],
];
}
public function messages()
{
return [
'image.dimensions' => '上传的图片宽度或高度不满足最小要求。',
];
}
public function image() : UploadedFile
{
return $this->file('image');
}
// 可选:验证图片的最大尺寸
public function validateImageSize()
{
$image = Image::make($this->image());
$maxWidth = 1000; // 示例最大宽度
$maxHeight = 1000; // 示例最大高度
if ($image->width() > $maxWidth || $image->height() > $maxHeight) {
throw new ValidationException('上传的图片尺寸超过了最大允许值。');
}
}
}
然后,在控制器中使用这个请求来处理图片上传:
use App\Http\Requests\StoreImageRequest;
class ImageController extends Controller
{
public function store(StoreImageRequest $request)
{
$request->validateImageSize(); // 验证图片尺寸
// 处理图片上传逻辑...
}
}
在这个示例中,我们定义了一个StoreImageRequest
类,在其规则方法中使用了dimensions
验证规则来限制图片的最小宽度和高度。同时,我们提供了一个validateImageSize
方法来进一步验证图片的最大尺寸。在控制器中,我们通过StoreImageRequest
来处理请求,确保只有通过验证的数据才能进一步处理。
评论已关闭