发送 csv 时“(400) 输入错误。某些域无效”

问题描述 投票:0回答:1

H。我需要通过ajax发送csv文件。我写了这段代码

    $('#send-csv').click(function(){
        var CSRF_TOKEN = document.querySelector('meta[name="csrf-token"]').getAttribute("content");

        var files =$('#csv-file')[0].files;
            console.log(files);
        if(files.length > 0){
                var fd = new FormData();

                fd.append('file',files[0]);
                fd.append('_token',CSRF_TOKEN);

                $.ajax({
                    url: "{{ route('api.send-csv') }}",
                    method: 'post',
                    data: fd,
                    contentType: false,
                    processData: false,
                    dataType: 'json',
                    success: function(response){
                        alert("send");
                        console.log(response);
                    },
                    error: function(response){
                            console.log("error : " + JSON.stringify(response) );
                    }
                });
        }else{
                alert("Please select a file.");
        }

});

和 html

    <div class="col-12 mt-3">
        <input type="file" class="btn btn-light" id="csv-file">
    </div>
    <div class="col-12 mt-2">
        <span class="btn btn-primary" id="send-csv">Wyślij plik CSV</span>
    </div>

问题出在 Laravel 的后端。我一直遇到错误“(400)输入错误。某些域无效”。控件的 sr 方法当前没有验证或业务逻辑。它只是返回一个字符串。

    public function readCSV(Request $request)
    {
        return 'test';
    }

如何将 csv 文件正确发送到控制器的方法以便读取它们?

php ajax laravel backend
1个回答
0
投票

这个问题可能与CORS政策有关。 尝试:

composer require barryvdh/laravel-cors

在 config/app.php 文件中添加

providers

Barryvdh\Cors\ServiceProvider::class,

奔跑

php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"

打开 config/cors.php 文件并调整配置以允许来自前端域的请求

'paths' => ['api/*', 'sanctum/csrf-cookie', 'read-csv'], //try * if not work
'allowed_methods' => ['*'],
'allowed_origins' => ['http://your-frontend-domain.com'], //try * if not work
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => false,
© www.soinside.com 2019 - 2024. All rights reserved.