我正在尝试将CSV发布到我们的某个API并从中导入数据。我看了一下CSVFormat,看起来它处理了CSV的解析并将结果放在一个数组中,这太棒了!但是,我在尝试进行POST调用时遇到了一些问题。
在我的index.php文件中,我支持的格式设置如下:
$r->setSupportedFormats('JsonFormat', 'CsvFormat');
但是,当我使用Postman将CSV文件发送到我的API时,我收到以下错误:
{
"error": {
"code": 403,
"message": "Content type `multipart/form-data` is not supported."
},
"debug": {
"source": "Restler.php:468 at setup stage",
"stages": {
"success": [],
"failure": [
"get",
"route",
"negotiate",
"message"
]
}
}
}
我尝试将CsvFormat更改为UploadFormat,但它可以正常工作,但CSV无法解析。如何使用POST将CSV上传到我的API并通过CsvFormat进行解析?
答案 0 :(得分:1)
您需要将UploadFormat
添加到支持的格式
你的api课可以像
<?php
use Luracast\Restler\Scope;
class Api
{
public function post(array $csv)
{
$parsed_data = Scope::get('CsvFormat')->decode(file_get_contents($csv['tmp_name']));
return $parsed_data;
}
}
您可以使用以下表单发布您的csv文件
<html>
<body>
<form action="/api" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label><input type="file" name="csv" id="file" /> <br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>