无法将文件从 Postman 发送到 Laravel API

Cannot send file from Postman to Laravel API

我正在尝试从 postman 向我的 laravel API 发送图像。
我在请求正文中添加了文件(280KB),如下所示:

在服务器端,我试图捕获文件并保存它,但是 returns 没有文件。

public function uploadImage(Request $request)
    {
        //returns false
        $request->hasFile('profile_image');
        //returns profile_image is required
        $request->validate(['profile_image' => 'required|image:jpeg,png,jpg,gif,svg']);
        //returns null
        $request->file('profile_image'); 
    }

我正在从 api.php 调用函数,如下所示:

Route::put('/creators/{id}/upload_image',[CreatorController::class,'uploadImage']);

我想也许我不应该把文件放在正文中,但找不到替代方案。
此外,我终于尝试从 vue 客户端发送文件,但我在尝试从那里发送文件时遇到了同样的问题。
如何让服务器捕获文件?

编辑:调整示例代码中的拼写错误

新代码示例

我将方法从 put 更改为 post,因为我也想测试 post 方法。我也试过 _method 预先放入 postman 。

这是 Laravel 上的代码示例:

//api.php
Route::put('/creators/{id}/upload_image',[CreatorController::class,'uploadImage']);
    //CreatorController.php
    public function uploadImage(Request $request)
    {
        if($request->hasFile('profile_image')){
            $allowedfileExtension=['gif','jpg','png'];
            $file = $request->file('profile_image');
            $extension = $file->getClientOriginalExtension();

            if(in_array($extension,$allowedfileExtension)) {
                $path = $file->store('public/images/profile');
                $path_url = $path;
                return ["image_url" => $path_url, "image" => $request->file('profile_image')];
            }

            return false;
        }
    }

$request->hasFile('profile_image') returns true,但是$request->file('profile_image') returns null,保存图片失败。
我的 vue 客户端代码(如果它可能有用的话):

if(this.profile_image != null){
  let data = new FormData();
  data.append('profile_image', this.profile_image)
  axios
    .post('http://localhost:8000/api/creators/'+uid+'/upload_image', data, head)
    .then(
      response => (
        //successfully receives the image_url
        this.creatorData.image_url = response.data.image_url,
        console.log(response.data)
      ),
    )
    .catch(
      error => (
        localStorage.setItem('error', error),
        console.log(error.response)
      ),
      this.loading = false,
    )
}

客户端实际收到“image_url”,但图像未保存在laravel。

laravel不支持直接put方法。 您必须使用 post 方法,然后将 _method 传递给您的 laravel 项目

like this picture