File upload Laravel将文件上载到资源
在Laravel中,我有一个资源控制器,需要在其中处理图片上传。在我的create.blade.php中,我有以下表格: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() }} 在我
{{ 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">