Dropzone CSRF令牌不匹配Laravel 5

Gab*_*eur 4 csrf laravel dropzone.js laravel-5.2 laravel-5.5

我正在使用Dropzone使用Laravel 5上传图像.在Dropzone对我的URL进行put调用后,我收到以下错误:

VerifyCsrfToken.php第67行中的TokenMismatchException:

但是,当我查看请求的有效负载时,令牌存在:

------ WebKitFormBoundary91A7BYrMsDcGTEvx Content-Disposition:form-data; NAME = "_方法"

PUT ------ WebKitFormBoundary91A7BYrMsDcGTEvx Content-Disposition:form-data; NAME = "_令牌"

j3NbjibYF7k8g2w1P0enw6YVfDrDvCGKFMCFt4NX ------ WebKitFormBoundary91A7BYrMsDcGTEvx内容处置:形状数据; NAME = "标题"

这是我的JS:

    Dropzone.options.realDropzone = {
        url: '/user/manage/10',
        method: 'PUT',
        paramName: 'file',
        uploadMultiple: false,
        parallelUploads: 100,
        previewsContainer: '#dropzonePreview',
        addRemoveLinks: true,
        maxFiles: 10,
        autoProcessQueue: false,

        init: function () {
            var dropZone = this;

            this.element.querySelector("#save").addEventListener("click", function (e) {
                e.preventDefault();
                e.stopPropagation();

                console.log("clicked submit");
                dropZone.processQueue();
            });
        },
    };
Run Code Online (Sandbox Code Playgroud)

我的表格:

{!! Form::model($asset, ['method' => 'PUT', 'class' => 'dropzone', 'id' => 'real-dropzone', 'action' => ['UserManagementController@update', $asset->id], 'file' => true]) !!}
Run Code Online (Sandbox Code Playgroud)

我的控制器:

   public function update(Request $request, $id)
    {

        return dd(FileRequest::file('file'));
    }
Run Code Online (Sandbox Code Playgroud)

小智 7

尝试在Dropzone选项中添加令牌:

sending: function(file, xhr, formData) {
    formData.append("_token", "{{ csrf_token() }}");
},
Run Code Online (Sandbox Code Playgroud)


Jea*_*mon 5

你可以{{ csrf_field() }}在你的表单中添加


Pay*_*jad 5

我的 Laravel 5.6 工作代码:

超文本标记语言

<div class="dropzone dropzone-previews" id="my-awesome-dropzone"></div>
Run Code Online (Sandbox Code Playgroud)

jQuery

Dropzone.autoDiscover = false;
$(document).ready(function() {
    var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
    $("div#my-awesome-dropzone").dropzone({
        url: "{{ url('/upload') }}",
        headers: {
            'x-csrf-token': CSRF_TOKEN,
        },
    });
});
Run Code Online (Sandbox Code Playgroud)