15

我有一个用于图像上传的表单字段,我用“文件”=> 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总是返回假,我不知道为什么。

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

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

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

4

4 回答 4

17

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

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

于 2014-09-19T09:37:58.620 回答
11

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

于 2017-11-02T14:46:36.543 回答
7

你如何打开你的表格?如果您希望表单接受您需要的文件,请像这样打开它:

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

在 Laravel 文档中打开表单

于 2014-09-19T08:11:14.920 回答
1

对于使用更高版本 laravel 的人

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

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

问候

于 2021-11-30T03:42:31.043 回答