编辑:
我设法用错误的文件类型解决了第一个问题。通过将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}}
所以我的问题是如何让这些错误与验证一起使用?我不想向最终用户显示那么长的错误消息,那么我如何修复它以便我的验证错误起作用,以及不允许出现默认错误?