此路由不支持post方法.支持的方法:get, head Laravel 8



我正在尝试为用户帐户开发文件上传。每次提交时,我都会得到错误:此路由不支持POST方法。支持的方法:GET、HEAD.

但是它应该支持Post方法吗?

你能帮帮我吗?
<form  action="{{url('image-upload')}}" enctype="multipart/form-data" method="post">
@csrf
<input type="file" name="file">
<input type="submit">
</form>

控制器

<?php
namespace AppHttpControllers;
use IlluminateContractsFoundationApplication;
use IlluminateContractsViewFactory;
use IlluminateContractsViewView;
use IlluminateHttpRedirectResponse;
use IlluminateHttpRequest;
class ImageUploadController extends Controller
{
/**
* Display a listing of the resource.
*
* @return Application|Factory|View
*/
public function imageUpload()
{
return view('imageUpload');
}
/**
* Display a listing of the resource.
*
* @param Request $request
* @return RedirectResponse
*/
public function imageUploadPost(Request $request): RedirectResponse
{
$request->validate([
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$imageName = time().'.'.$request->image->extension();
$request->image->move(public_path('images'), $imageName);
return back()
->with('success','You have successfully upload image.')
->with('image',$imageName);
}
}

路线,web.php:

Route::get('image-upload', 'ImageUploadController@imageUpaload')->name('image.upload');
Route::post('image-upload', 'ImageUploadController@imageUploadPost')->name('image.upload.post');

在表单中,您使用的是带有GET方法的路由,而不是带有POST方法的路由。您还使用了url函数而不是route。而不是image-upload应该是image.upload加一个点.

因此,您应该将action="{{url('image-upload')}}"更改为action="{{route('image.upload.post')}}"

你的表单应该是这样的:

<form action="{{route('image.upload.post')}}" enctype="multipart/form-data" method="post">
@csrf
<input type="file" name="file">
<input type="submit">
</form>

最新更新