如果不在上传的文件上检查getClientOriginalName(),我怎么能更好地做到这一点?

时间:2013-06-14 13:08:46

标签: laravel laravel-4

    $input = Input::all();
    $input['resim'] = Input::file('resim')->getClientOriginalName();

    $rules = array( 
        'resim'         => 'required|max:3000|image|mimes:jpg,gif,png',
    );

    $validation = Validator::make($input, $rules);

    if($validation->fails())
    {
        return View::make('theme-admin.slider_add')
            ->nest('message_area', 'theme-admin.error', array('message' => $validation->messages()->first()));
    }

    ...

问题是,Input::file('resim')->getClientOriginalName();在未上传图片时抛出异常。 (例如,当我直接点击HTML表单上的提交按钮时)

但是,required|max:3000|image|mimes:jpg,gif,png如果删除该行,则此规则不起作用。无论我是否上传了有效图片,它都不会通过mimes:jpg,gif,png控件。

如何在不依赖Input::file('resim')->getClientOriginalName();的情况下执行此操作?我希望required控制来处理必要的事情。

2 个答案:

答案 0 :(得分:0)

//Input has file with name attribute as 'resim'
$rules = array('resim' => 'required|max:3000|image|mimes:jpg,gif,png');

$validator = Validator::make(Input::all(), $rules);

if ($validator->fails())
{
    return Redirect::to('...')->withErrors($validator);
}

...

答案 1 :(得分:0)

问题在于我试图上传的图片。出于某种原因,我的一些JPG文件无法通过mimetype检查,而其他人可以。

他们都通过了getClientOriginalName()