我正在使用一个表单来上传视频文件。由于某些原因,我得到的是以下错误:
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对象的任何属性时你会看到异常,因为文件不存在