我有一个用于上传图像的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"
作为表单属性,同时确保method
是POST
<form action="/foo" method="post" enctype="multipart/form-data">
问候