【问题标题】:Laravel can not get files in ajax request with jqueryLaravel 无法使用 jquery 获取 ajax 请求中的文件
【发布时间】:2020-08-15 05:50:58
【问题描述】:

我有一个表格,我想把它发送到 laravel,它确实有文件。 我尝试了很多方法,但我无法上传照片。 当我尝试获取文件时,它显示为 null。

dd($request->file('file'));

这是我的 js 部分:

    

function newUser() {
        let formData = new FormData();
        formData.append('category_id', $("#parentCombo").val());
        formData.append('sub_category_id', $("#childrenCombo").val());
        formData.append('province_id', $("#provinceCombo").val());
        formData.append('city_id', $("#cityCombo").val());
        formData.append('area', $("#area").val());
        formData.append('price', $("#price").val());
        formData.append('phone', $("#phone").val());
        formData.append('age', $("#age").val());
        formData.append('status', $("#status").val());
        formData.append('email', $("#email").val());
        formData.append('file', $('#file'));
        formData.append('description', $("#description").val());
        formData.append('title', $("#title").val());
        formData.append('room', $("#room").val());


        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
        $.post({

            url: '{{ url('admin/notices') }}',
            data: formData,
            processData: false,
            contentType: false,
            async: true,
            success(data) {
                if (data['status'] == 201) {
                    swal({
                        title: 'با موفقیت انجام شد!',
                        text: data['message'],
                        type: 'success',
                        padding: '2em'
                    })
                }
            },
            error(err) {
                swal({
                    title: 'عملیات شکست خورد!',
                    text: err.statusText,
                    type: 'error',
                    padding: '2em'
                })
                console.log(err)
            }

        })
    }
</script>

这是我的 Laravel 控制器:

        $notice->picture = $request->file('file') ? $this->storeImage() : null;
        $notice->title = $request->get('title');
        $notice->description = $request->get('description');
        $notice->area = $request->get('area');
        $notice->room = $request->get('room');
        $notice->price = $request->get('price');
        $notice->category_id = $request->get('category_id');
        $notice->sub_category_id = $request->get('sub_category_id');
        $notice->province_id = $request->get('province_id');
        $notice->city_id = $request->get('city_id');
        $notice->phone = $request->get('phone') ?? null;
        $notice->status = $request->get('status');
        $notice->age = $request->get('age');
        $notice->user_ip = ip2long($request->ip());
        $notice->user_agent = $request->userAgent();
        $notice->region = $request->get('region');
        $notice->user_id = auth()->user()->id ?? null;
        $res = $notice->save();
        if($res){
            return response([
                'status' => 201,
                'message' => 'عملیات با موفقیت انجام شد'
            ]);
        }

注意:它适用于通常的 HTTP 请求。我不知道如何发送带有 JQUERY 的文件,以便我可以使用 $request-&gt;file('file'); 在 LARAVEL 中获取它

【问题讨论】:

标签: php jquery ajax laravel


【解决方案1】:

您需要按如下方式附加您的文件。

formData.append('file', $('#file')[0].files[0]);

【讨论】:

    【解决方案2】:

    你可以添加

    enctype="multipart/form-data"
    

    在表单中,因为它在向控制器发送媒体时会导致问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 2013-04-30
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多