【问题标题】:Upload a CSV in Restler 3rc5 through CSVformat通过 CSVformat 在 Restler 3rc5 中上传 CSV
【发布时间】:2014-07-23 05:17:40
【问题描述】:

我正在尝试将 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 对其进行解析?

【问题讨论】:

    标签: php restler


    【解决方案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>
    

    【讨论】:

    • 感谢 Luracast!是否有关于 CSV 的文档?我找不到任何建议您同时需要 UploadFormat 和 CSVFormat。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    相关资源
    最近更新 更多