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

时间:2014-09-19 08:07:10

标签: php laravel file-upload laravel-4.2

我有一个用于图片上传的表单字段,我打开了'files'=>是的,就像这样:

{{ 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] => 
)

我已经为另一位用户测试了另一张图片,这很好用。我不明白为什么这对一些用户和其他一些用户不起作用。
是否有某种图片不被接受?

还有哪些其他来源可能是导致此问题的原因?

3 个答案:

答案 0 :(得分:7)

你如何打开表格?如果您希望表单接受您需要的文件,请将其打开,如下所示:

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

Opening a form in the Laravel Docs

答案 1 :(得分:7)

我解决了什么问题。 代码很好,但问题是一些图片只是很大。

修改:
正如Don's Panic指出的那样,编辑upload_max_filesize可以解决问题。

答案 2 :(得分:4)

我遇到了同样的问题,我检查了我的代码并注意到我的表单中没有enctype =“multipart / form-data”标题,希望这个大忽视帮助任何人