使用Drop Zone格式化laravel 4错误?

时间:2014-07-19 05:09:00

标签: php laravel-4 dropzone.js

编辑:

我设法用错误的文件类型解决了第一个问题。通过将if语句更改为:

if ($v->fails())
    {
        return Response::json('error', 400);
    }

我能够返回任何非图像文件类型的错误。但是,对于大于我的大小限制的任何内容,我仍然会遇到以下问题。

我有以下代码,使用Dropzone.js和laravel 4将照片上传到我的服务器。

public function upload()
{
    $file = Input::file('file');
    $input = Input::all();


$rules = array
(
    'file' => 'mimes:jpeg,bmp,png,gif | Max:2048'
);


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

if( $v->passes() ) 
{

    $l = 0; 
    $dir = 'photos';
    if ($handle = opendir($dir)) {
        while (($file = readdir($handle)) !== false){
        if (!in_array($file, array('.', '..')) && !is_dir($dir.$file)) 
            $l++;
        }
    }


    $dir = 'photos/' . $l;
    $i = 0;
    if ($handle = opendir($dir)) {
        while (($file = readdir($handle)) !== false){
        if (!in_array($file, array('.', '..')) && !is_dir($dir.$file)) 
            $i++;
        }
    }

    if($i >= 10000)
        {   
            $l++;
            $myDir = 'photos/' . $l;
            mkdir($myDir);

            $destinationPath = $myDir;
            $i = 0;
        }
    else
        {
            $destinationPath = 'photos/' . $l;
        }

    public_path().'/uploads' 
    $filename = $i + 1 . ".jpg";
    $upload_success = Input::file('file')->move($destinationPath, $filename);

    if( $upload_success ) 
    {
        return 10;
    } 
    else 
    {
        return 20;
    }
}

else
{
    return Redirect::to('upload')->withErrors($v);
}

}

现在代码工作正常,它按照预期成功上传照片,但我似乎无法正确显示错误。

如我的代码所示,我有两个验证规则,一个用于大小,一个用于文件类型。其中每一个都有自己的问题。

如果我上传的文件类型不正确,我就不会收到任何错误消息。 如果我上传过大的文件,我会收到错误,但是与laravel配置相比,我的验证规则似乎是错误的:

{"error":{"type":"Symfony\\Component\\HttpFoundation\\File\\Exception\\FileException","message":"The file \"Window quotes LP.psd\" exceeds your upload_max_filesize ini directive (limit is 2048 kb).","file":"C:\\wamp\\www\\real_estate\\vendor\\symfony\\http-foundation\\Symfony\\Component\\HttpFoundation\\File\\UploadedFile.php","line":255}}

所以我的问题是如何让这些错误与验证一起使用?我不想向最终用户显示那么长的错误消息,那么我如何修复它以便我的验证错误起作用,以及不允许出现默认错误?

0 个答案:

没有答案