我正在使用ajax请求(FormData)处理文件字段以将图像发送到服务器。
这是我的php ajax处理程序
public function onUploadAvatar()
{
$photo = Request::file('avatar');
$avatar = new Controllers\AvatarController( $photo );
$validator = $avatar->validator();
if ( $validator->fails() )
{
return [
'success' => false,
'validationErrors' => $validator->errors()
];
}
$moved = $avatar->attach();
if ( $moved !== false )
{
return [
'success' => true,
'avatarPath' => $moved
];
}
}
在我的验证方法
下面 public function validator()
{
$input = [
'avatar' => $this->photo
];
$rules = [
'avatar' => 'image|mimes:jpeg,jpg,png|max:1048576'
];
$messages = [
'mimes' => 'invalid format',
'max' => 'please 1MB',
'image' => 'please image'
];
$validator = Validator::make( $input, $rules, $messages );
return $validator;
}
当我发送一些大小小于max
规则的文件时,我有预期的响应:
问题
但是当我上传超过max
的文件时,我有这个(响应)错误:
其他验证规则正在运行。
其他信息
请求后返回一些数据:
return [
'photo' => Request::file('avatar'),
'hasFile' => Request::hasFile('avatar'),
'extension' => Request::file('avatar')->getClientOriginalExtension(),
'size' => Request::file('avatar')->getClientSize()
];
反应:
档案少于max
:
{"photo":{},"hasFile":true,"extension":"jpg","size":900498}
文件超过max
:
{"photo":{},"hasFile":false,"extension":"jpg","size":0}
解
我期待一些反馈作为文件" file.jpg"超过你的upload_max_filesize ini指令,因为php.ini失败与最大尺寸有关。只增加 upload_max_filesize 指令并且有效。没有更多问题。