0

我有两个 laravel 项目,一个用于 API,一个用于前端。我想要实现的是在我的前端发送上传的文件并使用 guzzlehttp6 将其发送到我的 API。这是我的代码。

前端 Laravel:

public function store(Request $request, $module_id)
{
    $videos = $request->file('file');
    // $name = time().$videos->getClientOriginalName();
    // $path = ('videos');
    // $videoFinal = $videos->move($path, $name);

    $file_name = fopen($videos, 'r');
    $client = new Client(['base_uri' => 'http://localhost/api.kourse/public/api/v1/']);

    try{
        $response = $client->request('POST', 'modules/'.$module_id.'/videos',[

            'file_name' => $file_name

        ]);

    }catch(ClientException $e){
        return $e->getResponse();
    }


}

返回 $videos 时,我会获取文件的路径。

这是我的 API

public function store(VideoRequest $request, $moduleId)
{

    $module = Module::find($moduleId);

    if( !$module )
    {
        return response()->json([

            'message'   => 'Module does not exist',
            'code'      => 404
        ],404);
    }

    $file = $request->file('file_name');
    $name = time(). $file->getClientOriginalName();
    $path = '/videos';
    $file->move(public_path().$path, $name);
    Video::create([

        'file_name' => $name,
        'file_path' => $path.$name,
        'module_id' => $module->id
    ]);

    return response()->json([

        'message'   => 'Successfully created and assgin video to this module'
    ],200);
}

我得到的是:

{message: {file_name: ["The file name field is required."]}, code: 422}
code
:
422

正如我的 VideoRequest 中定义的那样。

谁可以帮我这个事。

4

0 回答 0