通过CSV格式在Restler 3rc5中上传CSV

时间:2014-07-23 05:17:40

标签: php restler

我正在尝试将CS​​V发布到我们的某个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进行解析?

1 个答案:

答案 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>