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 文件正确发送到控制器的方法以便读取它们?
这个问题可能与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,