Laravel 5.8 使用 PUT 方法和 ajax 上传文件

我正在尝试使用带有 ajax 的 PUT 方法更新文件。无论出于何种原因,我都无法在控制器中发送请求。我创建了一个自定义验证器来检查文件是否丢失或某个输入请求是否丢失。它不断返回 422 文件丢失和名称丢失。我想念什么?下面是我的代码。


<script>

    $(document).ready(function() {

        $.ajaxSetup({

            headers: {

                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')

            }

        });


        $('#news_id').on('submit', function(e) {

            e.preventDefault();

            var data = new FormData();

            var newsletter_name = $('#newsletter_name').val();

            var newsletter_file = $('#newsletter_file')[0].files[0];

            data.append('newsletter_name', newsletter_name);

            data.append('newsletter_file', newsletter_file);

            var id = $('#hidden_id').val();

            console.log(newsletter_file);

            $.ajax({

                url: '/admin/newsletter/' + id,

                type: 'PUT',

                data: data,

                contentType: false,

                processData: false,

                beforeSend: function(data) {


                },

                success: function(data) {

                    console.log('success');

                },

                error: function(data) {

                    console.log(data)

                },

            });

        });

    });

</script>

这是我的html代码


<div class="container mt-5">

  <div class="col-md-6">

       <form action="" method="" enctype="multipart/form-data" id="news_id">

            @method('PUT')

            <div class="form-group">

                <label for="newsletter_name">Name</label>

                <input type="text" value="{{$newsletter->newsletter_name}}" name="newsletter_name" id="newsletter_name" class="form-control" placeholder="" aria-describedby="helpId">

                <input type="hidden" name="hidden_id" id="hidden_id" value="{{$newsletter->newsletter_id}}">

                <input type="hidden" name="_method" value="PUT">

            </div>

            </div>

        </form>

    </div>

</div>


回首忆惘然
浏览 145回答 1
1回答

慕盖茨4494581

添加data.append('_method', 'PUT');然后将您的请求类型更改为type: 'POST'&nbsp;因为某些浏览器无法发送PUT请求,所以 Laravel 可以PUT通过接收_method数据来接收请求。
打开App,查看更多内容
随时随地看视频慕课网APP