Php Laravel文件不存在-文件上载

Php Laravel文件不存在-文件上载,php,file,upload,laravel,Php,File,Upload,Laravel,我正在使用表单上传视频文件。出于某种原因,我得到的只是以下错误: Symfony \ Component \ HttpFoundation \ File \ Exception \ FileNotFoundException The file "" does not exist 在我的控制器中,我有一个需要文件的验证规则,如下所示 $validator = Validator::make(Input::all(), array( 'file' => 'required'

我正在使用表单上传视频文件。出于某种原因,我得到的只是以下错误:

Symfony \ Component \ HttpFoundation \ File \ Exception \ FileNotFoundException
The file "" does not exist
在我的控制器中,我有一个需要文件的验证规则,如下所示

$validator = Validator::make(Input::all(),
  array(
    'file'  => 'required'
  )
);

但是由于上面的规则,我无法正确地调试正在发生的事情,因此我最终删除了它,从而产生了上面的错误

在php.ini文件中,更改以下内容:

upload_max_filesize = 20M
post_max_size = 20M
这应该可以让它工作。

来清除答案
您上载的文件的大小大于php.ini中的php配置,因此当您尝试访问uploadFile对象的any属性时,您将看到异常,因为文件不存在

问题可能是超出了“upload\u max\u filesize”(检查您的php.ini),但是,最好先检查文件是否有效

if (!$file->isValid()) {
    throw new \Exception('Error on upload file: '.$file->getErrorMessage());
}
//...

在2020年使用Laravel 5.8时,我发现了这个问题,您的回答给了我一些线索,但当我尝试
isValid
方法时,仍然出现了一个错误。我发现这是检查文件是否太大的最佳方法:

    $file_result = new \stdClass();
    if ($request->file('file_to_upload')->getSize() === false) {
        $max_upload = min(ini_get('post_max_size'), ini_get('upload_max_filesize'));
       //From: https://gist.github.com/svizion/2343619
        $max_upload = str_replace('M', '', $max_upload);
        $max_upload = $max_upload * 1024;
        $file_result->error = "The file you are trying to upload is too large. The maximum size is " . $max_upload;
        //return whatever json_encoded data your client-side app expects.
    }

如果文件大小超过最大大小,则
getSize
方法似乎成功返回false。根据我的经验,
isValid
抛出了一个模糊的错误。upload_max_filesize参数用于保护服务器,因此当用户试图上载大文件且客户端验证设置不正确时,我需要一种可靠的捕获方法。

如果您解决了问题,请确保它不会显示为“未答复”最好留下一条评论,说这个答案来自OP,而不是把这个注释放在帖子里(因为我们尽量避免帖子中的噪音)。大多数人可能会建议创建post Community Wiki。这是最好的答案,因为我被卡住了,找不到实际原因,这确实解决了我的问题。这是在2014年解决的+接受的答案说明了php.ini文件中要做的更改。