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文件中要做的更改。