繁体   English   中英

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 对象的 any 属性时,您将看到异常,因为文件不存在

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM