Laravel Input::hasFile(';image';)即使上传了文件,也会返回false


Laravel Input::hasFile('image') returns false even if a File is uploaded

我有一个用于上传图像的Form字段,打开时使用'files'=>true,如下所示:

{{ Form::label('image', 'Image') }}
{{ Form::file('image') }}

在我的控制器中,我想检查是否上传了文件,并对其进行处理:

if (Input::hasFile('image')){
        $in_path = 'img/';
        $in_extension = Input::file('image')->getClientOriginalExtension();
        $filename = Input::get('name').".".$in_extension;
        Input::file('image')->move($in_path, $filename);
        $user->image = $filename;
    }

但是Input::hasFile总是返回false,我不知道为什么。

Input::file('image');

结果在:

Symfony'Component'HttpFoundation'File'UploadedFile Object
(
[test:Symfony'Component'HttpFoundation'File'UploadedFile:private] => 
[originalName:Symfony'Component'HttpFoundation'File'UploadedFile:private] => test.JPG
[mimeType:Symfony'Component'HttpFoundation'File'UploadedFile:private] => application/octet-stream
[size:Symfony'Component'HttpFoundation'File'UploadedFile:private] => 0
[error:Symfony'Component'HttpFoundation'File'UploadedFile:private] => 1
[pathName:SplFileInfo:private] => 
[fileName:SplFileInfo:private] => 
)

我已经为另一个用户测试了另一张图片,效果很好。我不明白为什么这对一些用户有效,而对另一些用户无效
是否有某种图片不被接受?

这个问题的原因还有哪些?

我解决了问题。代码很好,但问题是有些图片太大了。

编辑:
正如Don't Panic所指出的,编辑upload_max_filesize可以解决这个问题。

我也遇到了同样的问题,我检查了我的代码,发现表单中没有enctype="multipart/form data"标头,希望这个大疏忽能帮助任何

如何打开表单?如果你想让你的表格接受你需要的文件,那么像这样打开它:

echo Form::open(array('url' => 'foo/bar', 'files' => true))

在Laravel Docs 中打开表单

适用于使用laravel 更新版本的用户

添加enctype="multipart/form-data"作为表单属性,同时确保methodPOST

<form action="/foo" method="post" enctype="multipart/form-data">

问候