2014-07-23 58 views
0

我試圖將CSV文件發佈到我們的某個API並從中導入數據。我看了一下CSVFormat,它看起來像處理CSV的解析並將結果放入一個數組中,這非常棒!不過,我在嘗試執行POST調用時遇到了一些問題。通過CSV格式在Restler 3rc5中上傳CSV格式

在我的index.php文件,我已經設置了支持的格式如下:

$r->setSupportedFormats('JsonFormat', 'CsvFormat'); 

然而,當我使用郵差送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

必須同時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> 
+0

感謝Luracast!是否有關於CSV的任何地方的文檔?我無法找到任何暗示您需要UploadFormat和CSVFormat的內容。 – zongweil