首页 > 解决方案 > 此路由不支持 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 App\Http\Controllers;

use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;

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');

标签: laravel

解决方案


在您的表单中,您使用的是带有 GET 方法的路由,而不是带有 POST 方法的路由。您还使用函数 url 而不是路由。而不是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>

推荐阅读