我在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);
}
但文件在那里。有没有更好的方法呢?
感谢您的期待!
答案 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');