将.csv文件读入Laravel中的数组

时间:2016-10-19 15:55:26

标签: php laravel laravel-5

我在Laravel 5中的这个目录中存储了一个.csv文件:

/storage/app/data.csv

在这个函数内部我试图读取这个文件的内容并从中提取几个列,比如名称和城市到数组,示例代码:

curl -H 'Authorization: token mytoken' -H "Accept: application/vnd.github.v3.diff" https://api.github.com/repos/orgname/repo/pulls/1234

我在Controller中遇到ErrorException:

use Illuminate\Support\Facades\Storage;

public function get_data() {

 $file_n = Storage::url('data.csv');
 $file = fopen($file_n, "r");
 $all_data = array();
 while ( ($data = fgetcsv($file, 200, ",")) !==FALSE {

     $name = $data[0];
     $city = $data[1];
     $all_data = $name. " ".$city;

     array_push($array, $all_data);
  }
  fclose($file);
}

但文件在那里。有没有更好的方法呢?

感谢您的期待!

5 个答案:

答案 0 :(得分:7)

你的问题与前面人们所指出的一样。

您可以使用辅助函数storage_path https://laravel.com/docs/5.3/helpers#method-storage-path

在你的情况下,它会像这样使用:

storage_path('app/data.csv');

作为推荐,您可以使用此库来处理CSV / Excel文件,它非常易于使用:https://github.com/Maatwebsite/Laravel-Excel

答案 1 :(得分:1)

Laravel 5.7 试试这个:

Storage::disk('local')->path('import.csv');

应该很好。

答案 2 :(得分:0)

我通过使用“storage_path”来解决这个问题。

...
$filename = storage_path('/app/data.csv');
$file = fopen($filename, "r");
$all_data = array();
while ( ($data = fgetcsv($file, 200, ",")) !==FALSE {
...

谢谢!

答案 3 :(得分:0)

我通过在config / filesystems.php中向我的本地磁盘配置添加url密钥解决了这个问题,如下所示:

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
        'url' => storage_path('app')
    ],

现在我可以引用Storage :: url(' filename.txt')并返回:

    /home/josh/apps/storage/app/filename.txt

答案 4 :(得分:0)

尝试以下

$file_n = Storage::get('data.csv');