即使上传了文件,Laravel Input::hasFile('image') 也会返回 false
Posted
技术标签:
【中文标题】即使上传了文件,Laravel Input::hasFile(\'image\') 也会返回 false【英文标题】:Laravel Input::hasFile('image') returns false even if a File is uploaded即使上传了文件,Laravel Input::hasFile('image') 也会返回 false 【发布时间】:2014-11-13 18:28:33 【问题描述】:我有一个用于上传图片的表单字段,我用 '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] =>
)
我已经为另一个用户测试了另一张图片,效果很好。我不明白为什么这对某些用户有效,而对另一些用户则无效。 是不是有些图片不被接受?
还有哪些其他来源可能导致此问题?
【问题讨论】:
文件存在吗?是上传了吗?你能把Input::file()
里面的东西贴出来吗?使用 dd()
进行 var_dumping。
我编辑了我的问题!
我解决了问题所在。代码很好,但问题是有些图片太大了。
【参考方案1】:
我解决了问题所在。
代码很好,但问题是有些图片太大了。
编辑:
正如 Don't Panic 指出的,编辑upload_max_filesize
可以解决问题。
【讨论】:
为什么大图返回hasfile() -> false? @Jorre 我无法回答这个问题......但一切都适用于较小的图片。 这不作为评论更好,因为它很短。这就是答案,而且完全有效。我遇到了同样的问题并得出了相同的解决方案。增加upload_max_filesize
就可以了。
需要注意的重要一点是我还必须将 post_max_size 更改为大于 upload_max_filesize。【参考方案2】:
我遇到了同样的问题,我检查了我的代码,发现表单中没有 enctype="multipart/form-data" 标头,希望这个大疏忽对任何人有所帮助
【讨论】:
【参考方案3】:如何打开表单?如果您希望表单接受您需要的文件,请像这样打开它:
echo Form::open(array('url' => 'foo/bar', 'files' => true))
Opening a form in the Laravel Docs
【讨论】:
【参考方案4】:对于使用更高版本 laravel 的人
将enctype="multipart/form-data"
添加为表单属性,同时确保method
为POST
<form action="/foo" method="post" enctype="multipart/form-data">
问候
【讨论】:
以上是关于即使上传了文件,Laravel Input::hasFile('image') 也会返回 false的主要内容,如果未能解决你的问题,请参考以下文章