在Laravel我有一个资源控制器,我需要处理图片上传 . 在我的create.blade.php中,我有以下形式:
{{ Form::open(array('action' => 'PhotoController@store', 'method' => 'post')); }}
{{Form::text('text'); }}
{{Form::file('photo');}}
{{Form::submit('Submit');}}
{{ Form::close() }}
在我的PhotoController中,我有以下商店功能
public function store()
{
if (Input::hasFile('photo'))
{
return 'Got the photo';
}
else { return Input::get('text'); }
}
返回字段'text'的输入,但是看起来Laravel似乎不能找到我上传的照片 . 我试图改变方法来放置和创建一个自定义函数来处理这个,但结果相同 . 为什么我不能让Laravel认出我已经附加了一个文件?
提前致谢
2 回答
您需要将
'files' => true
和'enctype' =>"multipart/form-data"
添加到您的表单中关于
POST
和PUT
选项,它取决于您正在做什么 . 在使用store
资源方法时,应使用POST
. 如果您打算使用update
方法,那么您将使用PUT
.对于资源控制器,方法和HTTP请求的工作方式如下
令人困惑的是
create
和edit
,您可能认为这应该是POST
但请记住,这是用于编辑或创建项目的表单 .获得文件后,您需要对其进行操作 . 因此,接下来您将要对文件执行某些操作,因此您将需要
有关这些和所有其他
Input::file()
方法的文档可以在Laravel documentation here中找到 .这是我用于文件上传表单的内容,我没有
'enctype'
或'method'
而且我指向路由而不是操作 .这是HTML中的翻译内容:
如您所见,
'enctype'
和'method'
由Form::open
辅助函数添加 .role="form"
用于Bootstrap以正确格式化表单 .关于HTML和表单:http://laravel.com/docs/4.2/html