File upload Laravel将文件上载到资源

File upload Laravel将文件上载到资源,file-upload,laravel,File Upload,Laravel,在Laravel中,我有一个资源控制器,需要在其中处理图片上传。在我的create.blade.php中,我有以下表格: {{ Form::open(array('action' => 'PhotoController@store', 'method' => 'post')); }} {{Form::text('text'); }} {{Form::file('photo');}} {{Form::submit('Submit');}} {{ Form::close() }} 在我

在Laravel中,我有一个资源控制器,需要在其中处理图片上传。在我的create.blade.php中,我有以下表格:

{{ Form::open(array('action' => 'PhotoController@store', 'method' => 'post')); }}
{{Form::text('text'); }}
{{Form::file('photo');}}
{{Form::submit('Submit');}}
{{ Form::close() }}
在我的光电控制器中,我有以下存储功能

public function store()
{
    if (Input::hasFile('photo'))
    {
         return 'Got the photo';
    }
    else { return Input::get('text'); }
}
返回了“文本”字段的输入,但Laravel似乎无法找到我上传的照片。 我试图改变方法来放置并创建一个自定义函数来处理这个问题,但结果是一样的。为什么我不能让拉威尔知道我附上了一份文件


提前感谢

您需要像这样向表单中添加
'files'=>true
'enctype'=>“多部分/表单数据”

{{ Form::open(array('action' => 'PhotoController@store', 'method' => 'post', 'files' => true, 'enctype' =>"multipart/form-data")); }}
关于
POST
PUT
选项,这取决于您正在做什么。在使用
store
资源方法时,应该使用
POST
。如果要使用
update
方法,则应使用
PUT

对于资源控制器,方法和HTTP请求的工作方式如下

 +-------------------+-------------+
 | Controller method | HTTP Method |
 +-------------------+-------------+
 | index             | GET         |
 | create            | GET         |
 | store             | POST        |
 | show              | GET         |
 | edit              | GET         |
 | update            | PUT / PATCH |
 | destroy           | DELETE      |
 +-------------------+-------------+
容易混淆的是
create
edit
,您可能认为这两个页面应该是
POST
,但请记住,这是“获取”表单以编辑或创建项目的页面

一旦你有了你的文件,你需要对它做些什么。因此,接下来您需要对该文件做一些处理,因此您需要

$photo = Input::file('photo');
$photo->move($destinationPath, $fileName);
有关这些方法和所有其他
Input::file()
方法的文档可以在中找到

这是我用于文件上传表单的内容,我没有
'enctype'
'method'
,我指向的是一个路由而不是一个操作

这就是它在HTML中的翻译:

<form method="POST" action="action url" accept-charset="UTF-8" role="form" enctype="multipart/form-data"><input name="_token" type="hidden" value="token value">

如您所见,
'enctype'
'method'
是由
表单::open
助手函数添加的。
role=“form”
用于正确格式化表单


关于HTML和表单:

非常有效。还没有测试move函数,但现在它显示我上传了一个文件,并在我制作附件时返回“gotthephoto”。谢谢,工作也很好。与同样有效的DavidT的解决方案相比,该解决方案有什么优势?实际上没有优势,只是指出一些参数是可选的,并且使用了路由而不是操作。这不是“另一个解决方案”,我们都指出了同样的问题。他的回答很好:)
<form method="POST" action="action url" accept-charset="UTF-8" role="form" enctype="multipart/form-data"><input name="_token" type="hidden" value="token value">