表单数据未进入 Laravel 5.7 that post from Angular 7

Form Data not getting in Laravel 5.7 that post from Angular 7

我正在使用 Angular 7Laravel 5.7。我需要 post 从 Angular 到 Laravel 的数据。

这是我的 Angular 7 代码到 post 数据到 laravel api :

const target = event.target;
        const name = target.querySelector('#name').value;
        const phone = target.querySelector('#phone').value;
        const file = target.querySelector('#file').files[0];
        const httpOptions = {
            headers: new HttpHeaders({
                'Authorization' : 'Bearer ' +  Cookie.get('token'),
                'Content-type': 'multipart/form-data; charset=utf-8; boundary=' + Math.random().toString().substr(2)
            })
        };
       const input = new FormData();
        input.append('name', name);
        input.append('phone', phone);
        input.append('file', file);


        this.http.post(this.globvar.apipath + 'api/dpost/update/' + this.slug, input, httpOptions ).subscribe(
            data => {
console.log(data);

            },
            error => {}
        );

这是我的 Laravel 5.7 控制器代码:

static public function updatecarspa($slug, Request $request)
    {

        echo "<pre>";
        print_r($request->input('name'));
        echo "</pre>";
        exit;

       // $slug = $request->input('name');

        return response()->json(['data'=>$slug], 200);
    }

laravel 打印空白 <pre></pre>;

没有错误打印

我是 angular 的新手,我没有从 angular 到 laravel 获取任何数据。请帮助我。

您的 Angular 代码没有问题。

试试下面的方法。

$inputs = Request::json()->all();
print_r($inputs['name']);

好的,我得出结论

在 Laravel 5.7 和 API 中,您只能 post JSON 数据。所以在我的 angular 我 post Content-type 数据 multipart/form-data 所以 angular Content-type 需要改变 application/json

所以 angular 我改变了 :

 const input = {'name' : name, 'phone': phone, 'address' : address, 'pincode' : pincode, 'website' : website, image : this.is_uploded ? this.imagedata : ''};


    const httpOptions = {
        headers: new HttpHeaders({
            'Authorization' : 'Bearer ' +  Cookie.get('mmraccesstokenhope'),
            'Content-type': 'application/json; charset=utf-8; boundary=' + Math.random().toString().substr(2) + ';',
        })
    };

        this.http.post(this.globvar.apipath + 'api/dpost/update/' + this.slug, input, httpOptions ).subscribe(
            (data: any[]) => {
                this.Main.loading = false;
                alert('update Success');
                this.router.navigate(['/list/dpost']);

            },
            error => {}
        );

同样对于 Image 文件,您需要将 base64 数据 url 发送到 API 服务器并保存图像。