Input::hasFile()不起作用


Input::hasFile() not working

我试图检查我试图上传的图像是否正在处理,但是当我尝试使用de Input::hasFile('upimg')来检查它时,它不做任何事情。这是我的表单:

{!! Form::open(array('route' => array('uploadimage'), 'method' => 'POST')) !!}
                    {!! csrf_field() !!}
                    <div class="form-group">
                        {!! Form::label('newimg', 'Choose Image to upload:', ['class' => 'control-label']) !!}
                        {!! Form::file('upimg', null) !!}
                    </div>
                    <div class="form-group">
                        {!! Form::label('directory', 'Choose directory:', ['class' => 'control-label']) !!}
                        {!! Form::select('newimage', [ '' => 'none'] + $imagesdir , '', ['class' => 'form-control']) !!}
                    </div>
                    {!! Form::submit('Upload', ['class' => 'btn btn-primary']) !!}
                    {!! Form::close() !!}

这是我用来检查文件的代码:

public function doUpload()
{
   if (Input::hasFile('upimg')){
      echo 'uploaded';
   }; 
}

正如你所看到的,我正在尝试检查:

{!! Form::file('upimg', null) !!}

如果我没有错,它应该给mi返回回声,但什么也没有发生。为什么这不起作用?我做错了什么?

确保表单定义中有'file' => true选项,如下所示:

{!! Form::open(['route' => ['uploadimage'], 'file' => true]) !!}

此选项导致您的表单将在HTML表单标签中呈现enctype="multipart/form-data"选项。参见文档:HTML enctype

你不需要在表单的定义中添加method => 'POST',因为Laravel 5默认使用POST方法发送表单。

如果这个解决方案不适合你,请告诉我。

对于检查服务器端的文件,您可以使用Request对象的方法,如Laravel文档中的: