【问题标题】:Laravel 5.8 file upload using PUT method with ajaxLaravel 5.8 文件上传使用 PUT 方法和 ajax
【发布时间】:2020-04-06 10:57:02
【问题描述】:

我正在尝试使用带有 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 class="input-group mb-3">
                <div class="custom-file">
                    <input name="newsletter_file" type="file" class="custom-file-input" id="newsletter_file" aria-describedby="inputGroupFileAddon03">
                    <label class="custom-file-label" for="newsletter_file">Choose file</label>
                </div>
            </div>
            <div>
                <button class="btn btn-primary btn-block" type="submit">UPDATE</button>
            </div>
        </form>
    </div>
</div>

【问题讨论】:

    标签: php jquery ajax file-upload laravel-5.8


    【解决方案1】:

    添加data.append('_method', 'PUT');,然后将您的请求类型更改为type: 'POST' 因为某些浏览器无法发送PUT 请求,所以Laravel 可以通过接收_method 数据来接收PUT 请求。

    【讨论】:

    • 谢谢兄弟。我不知道我应该将 PUT 方法与我的请求一起添加到我的表单数据中。
    猜你喜欢
    • 2011-12-17
    • 1970-01-01
    • 2019-06-17
    • 2021-03-08
    • 2017-03-05
    • 2018-02-27
    • 2011-07-05
    • 1970-01-01
    • 2021-06-02
    相关资源
    最近更新 更多