Laravel文件不存在 - 文件上传

时间:2014-03-13 19:26:14

标签: php file upload laravel

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

Symfony \ Component \ HttpFoundation \ File \ Exception \ FileNotFoundException
The file "" does not exist

在我的控制器中,我有一个验证规则来要求文件,如此

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

但由于上述规则,我无法正确调试正在发生的事情,因此我最终将其删除,因此产生上述错误。

4 个答案:

答案 0 :(得分:20)

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

upload_max_filesize = 20M
post_max_size = 20M

这应该可以使它发挥作用。

答案 1 :(得分:1)

可能的问题是超出了“ upload_max_filesize”(请检查您的php.ini),但是最好先检查该文件是否有效。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

在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参数可以保护服务器,因此我希望提供一种可靠的方法来捕获用户尝试上传大文件并且客户端验证设置不正确的情况。