我正在尝试为用户帐户开发文件上传。每次提交时,我都会得到错误:此路由不支持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>