Laravel文件不存在-文件上传


Laravel file does not exist - file upload

我正在使用一个表单来上传视频文件。由于某些原因,我得到的是以下错误:

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

可能问题是"upload_max_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参数是用来保护服务器的,所以我想要一种可靠的方式来捕捉当用户试图上传一个大文件时,我的客户端验证没有正确设置。

清除答案问题是你上传的文件的大小大于php。ini中的php配置,所以当你试图访问uploadFile对象的任何属性时你会看到异常,因为文件不存在